- #include <stdio.h> 
- #include <stdlib.h> 
- #include <string.h> 
-   
- typedef struct Resource 
- { 
- 	int low; 
- 	int length; 
- 	int *data; 
- } Resource; 
-   
- void Swap(int *first, int *second) 
- { 
- 	int tmp = *first; 
- 	*first = *second; 
- 	*second = tmp; 
- } 
-   
- void SortQuick(int **data, int *low, int *high) 
- { 
- 	int i = *low, 
- 		j = *high, 
- 		x = (*data)[(*low + *high) / 2]; 
-   
- 	do 
- 	{ 
- 		while((*data)[i] < x) i++; 
- 		while((*data)[j] > x) j--; 
-   
- 		if(i <= j) 
- 		{ 
- 			Swap(&(*data)[i], &(*data)[j]); 
- 			i++; 
- 			j--; 
- 		} 
-   
- 	} while(i <= j); 
-   
- 	if(i < *high) SortQuick(data, &i, high); 
- 	if(*low < j) SortQuick(data, low, &j); 
- } 
-   
- void ArrayPrint(int **data, int *array_length) 
- { 
- 	for(int i = 0; i < *array_length; i++) 
- 	{ 
- 		printf("[%i]: %20i\r\n",-  i , (*- data )[- i ]);
 
- 	} 
- } 
-   
- void ArrayInit(int **data, int *array_length) 
- { 
- 	(*- data ) = (int*)malloc(sizeof(int) * *- array_length );
 
-   
- 	for(int i = 0; i < *array_length; i++) 
- 	{ 
- 	} 
- } 
-   
- int GlobalInit(Resource **data_resource) 
- { 
-   
- 	*- data_resource  = (- Resource *)malloc(sizeof(- Resource ));
 
- 	(*data_resource)->low = 0; 
- 	(*data_resource)->length = 10;//rand(); 
-   
- 	ArrayInit(&(*data_resource)->data, &(*data_resource)->length); 
-   
- 	return (*data_resource)->length; 
- } 
-   
- void BenchmarkTest(Resource **data_resource) 
- { 
- 	ArrayPrint(&(*data_resource)->data, &(*data_resource)->length); 
-         (*data_resource)->length--; 
- 	SortQuick(&(*data_resource)->data, &(*data_resource)->low, &(*data_resource)->length); 
-         (*data_resource)->length++; 
- 	ArrayPrint(&(*data_resource)->data, &(*data_resource)->length); 
- } 
-   
- int main(void) 
- { 
- 	Resource *data_resource = NULL; 
-   
- 	GlobalInit(&data_resource); 
- 	BenchmarkTest(&data_resource); 
-   
- 	return 0; 
- } 
				I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKdHlwZWRlZiBzdHJ1Y3QgUmVzb3VyY2UKewoJaW50IGxvdzsKCWludCBsZW5ndGg7CglpbnQgKmRhdGE7Cn0gUmVzb3VyY2U7Cgp2b2lkIFN3YXAoaW50ICpmaXJzdCwgaW50ICpzZWNvbmQpCnsKCWludCB0bXAgPSAqZmlyc3Q7CgkqZmlyc3QgPSAqc2Vjb25kOwoJKnNlY29uZCA9IHRtcDsKfQoKdm9pZCBTb3J0UXVpY2soaW50ICoqZGF0YSwgaW50ICpsb3csIGludCAqaGlnaCkKewoJaW50IGkgPSAqbG93LAoJCWogPSAqaGlnaCwKCQl4ID0gKCpkYXRhKVsoKmxvdyArICpoaWdoKSAvIDJdOwoKCWRvCgl7CgkJd2hpbGUoKCpkYXRhKVtpXSA8IHgpIGkrKzsKCQl3aGlsZSgoKmRhdGEpW2pdID4geCkgai0tOwoKCQlpZihpIDw9IGopCgkJewoJCQlTd2FwKCYoKmRhdGEpW2ldLCAmKCpkYXRhKVtqXSk7CgkJCWkrKzsKCQkJai0tOwoJCX0KCgl9IHdoaWxlKGkgPD0gaik7CgoJaWYoaSA8ICpoaWdoKSBTb3J0UXVpY2soZGF0YSwgJmksIGhpZ2gpOwoJaWYoKmxvdyA8IGopIFNvcnRRdWljayhkYXRhLCBsb3csICZqKTsKfQoKdm9pZCBBcnJheVByaW50KGludCAqKmRhdGEsIGludCAqYXJyYXlfbGVuZ3RoKQp7Cglmb3IoaW50IGkgPSAwOyBpIDwgKmFycmF5X2xlbmd0aDsgaSsrKQoJewoJCXByaW50ZigiWyVpXTogJTIwaVxyXG4iLCBpLCAoKmRhdGEpW2ldKTsKCX0KfQoKdm9pZCBBcnJheUluaXQoaW50ICoqZGF0YSwgaW50ICphcnJheV9sZW5ndGgpCnsKCSgqZGF0YSkgPSAoaW50KiltYWxsb2Moc2l6ZW9mKGludCkgKiAqYXJyYXlfbGVuZ3RoKTsKCglmb3IoaW50IGkgPSAwOyBpIDwgKmFycmF5X2xlbmd0aDsgaSsrKQoJewoJCSgqZGF0YSlbaV0gPSByYW5kKCk7Cgl9Cn0KCmludCBHbG9iYWxJbml0KFJlc291cmNlICoqZGF0YV9yZXNvdXJjZSkKewoJc3JhbmQoKHVuc2lnbmVkIGludClyYW5kKCkpOwoKCSpkYXRhX3Jlc291cmNlID0gKFJlc291cmNlKiltYWxsb2Moc2l6ZW9mKFJlc291cmNlKSk7CgkoKmRhdGFfcmVzb3VyY2UpLT5sb3cgPSAwOwoJKCpkYXRhX3Jlc291cmNlKS0+bGVuZ3RoID0gMTA7Ly9yYW5kKCk7CgoJQXJyYXlJbml0KCYoKmRhdGFfcmVzb3VyY2UpLT5kYXRhLCAmKCpkYXRhX3Jlc291cmNlKS0+bGVuZ3RoKTsKCglyZXR1cm4gKCpkYXRhX3Jlc291cmNlKS0+bGVuZ3RoOwp9Cgp2b2lkIEJlbmNobWFya1Rlc3QoUmVzb3VyY2UgKipkYXRhX3Jlc291cmNlKQp7CglBcnJheVByaW50KCYoKmRhdGFfcmVzb3VyY2UpLT5kYXRhLCAmKCpkYXRhX3Jlc291cmNlKS0+bGVuZ3RoKTsKICAgICAgICAoKmRhdGFfcmVzb3VyY2UpLT5sZW5ndGgtLTsKCVNvcnRRdWljaygmKCpkYXRhX3Jlc291cmNlKS0+ZGF0YSwgJigqZGF0YV9yZXNvdXJjZSktPmxvdywgJigqZGF0YV9yZXNvdXJjZSktPmxlbmd0aCk7CiAgICAgICAgKCpkYXRhX3Jlc291cmNlKS0+bGVuZ3RoKys7CglBcnJheVByaW50KCYoKmRhdGFfcmVzb3VyY2UpLT5kYXRhLCAmKCpkYXRhX3Jlc291cmNlKS0+bGVuZ3RoKTsKfQoKaW50IG1haW4odm9pZCkKewoJUmVzb3VyY2UgKmRhdGFfcmVzb3VyY2UgPSBOVUxMOwoKCUdsb2JhbEluaXQoJmRhdGFfcmVzb3VyY2UpOwoJQmVuY2htYXJrVGVzdCgmZGF0YV9yZXNvdXJjZSk7CgoJcmV0dXJuIDA7Cn0=