- #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]: %i\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  = rand();
 
-   
- 	ArrayInit(&(*data_resource)->data, &(*data_resource)->length); 
-   
- 	return (*data_resource)->length; 
- } 
-   
- void BenchmarkTest(Resource **data_resource) 
- { 
- 	ArrayPrint(&(*data_resource)->data, &(*data_resource)->length); 
- 	SortQuick(&(*data_resource)->data, &(*data_resource)->low, &(*data_resource)->length - 1); 
- 	ArrayPrint(&(*data_resource)->data, &(*data_resource)->length); 
- } 
-   
- int main(void) 
- { 
- 	Resource *data_resource = NULL; 
-   
- 	GlobalInit(&data_resource); 
- 	BenchmarkTest(&data_resource); 
-   
- 	return 0; 
- } 
				I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKdHlwZWRlZiBzdHJ1Y3QgUmVzb3VyY2UKewoJaW50IGxvdzsKCWludCBsZW5ndGg7CglpbnQgKmRhdGE7Cn0gUmVzb3VyY2U7Cgp2b2lkIFN3YXAoaW50ICpmaXJzdCwgaW50ICpzZWNvbmQpCnsKCWludCB0bXAgPSAqZmlyc3Q7CgkqZmlyc3QgPSAqc2Vjb25kOwoJKnNlY29uZCA9IHRtcDsKfQoKdm9pZCBTb3J0UXVpY2soaW50ICoqZGF0YSwgaW50ICpsb3csIGludCAqaGlnaCkKewoJaW50IGkgPSAqbG93LAoJCWogPSAqaGlnaCwKCQl4ID0gKCpkYXRhKVsoKmxvdyArICpoaWdoKSAvIDJdOwoKCWRvCgl7CgkJd2hpbGUoKCpkYXRhKVtpXSA8IHgpIGkrKzsKCQl3aGlsZSgoKmRhdGEpW2pdID4geCkgai0tOwoKCQlpZihpIDw9IGopCgkJewoJCQlTd2FwKCYoKmRhdGEpW2ldLCAmKCpkYXRhKVtqXSk7CgkJCWkrKzsKCQkJai0tOwoJCX0KCgl9IHdoaWxlKGkgPD0gaik7CgoJaWYoaSA8ICpoaWdoKSBTb3J0UXVpY2soZGF0YSwgJmksIGhpZ2gpOwoJaWYoKmxvdyA8IGopIFNvcnRRdWljayhkYXRhLCBsb3csICZqKTsKfQoKdm9pZCBBcnJheVByaW50KGludCAqKmRhdGEsIGludCAqYXJyYXlfbGVuZ3RoKQp7Cglmb3IoaW50IGkgPSAwOyBpIDwgKmFycmF5X2xlbmd0aDsgaSsrKQoJewoJCXByaW50ZigiWyVpXTogJWlcclxuIiwgaSwgKCpkYXRhKVtpXSk7Cgl9Cn0KCnZvaWQgQXJyYXlJbml0KGludCAqKmRhdGEsIGludCAqYXJyYXlfbGVuZ3RoKQp7CgkoKmRhdGEpID0gKGludCopbWFsbG9jKHNpemVvZihpbnQpICogKmFycmF5X2xlbmd0aCk7CgoJZm9yKGludCBpID0gMDsgaSA8ICphcnJheV9sZW5ndGg7IGkrKykKCXsKCQkoKmRhdGEpW2ldID0gcmFuZCgpOwoJfQp9CgppbnQgR2xvYmFsSW5pdChSZXNvdXJjZSAqKmRhdGFfcmVzb3VyY2UpCnsKCXNyYW5kKCh1bnNpZ25lZCBpbnQpcmFuZCgpKTsKCgkqZGF0YV9yZXNvdXJjZSA9IChSZXNvdXJjZSopbWFsbG9jKHNpemVvZihSZXNvdXJjZSkpOwoJKCpkYXRhX3Jlc291cmNlKS0+bG93ID0gMDsKCSgqZGF0YV9yZXNvdXJjZSktPmxlbmd0aCA9IHJhbmQoKTsKCglBcnJheUluaXQoJigqZGF0YV9yZXNvdXJjZSktPmRhdGEsICYoKmRhdGFfcmVzb3VyY2UpLT5sZW5ndGgpOwoKCXJldHVybiAoKmRhdGFfcmVzb3VyY2UpLT5sZW5ndGg7Cn0KCnZvaWQgQmVuY2htYXJrVGVzdChSZXNvdXJjZSAqKmRhdGFfcmVzb3VyY2UpCnsKCUFycmF5UHJpbnQoJigqZGF0YV9yZXNvdXJjZSktPmRhdGEsICYoKmRhdGFfcmVzb3VyY2UpLT5sZW5ndGgpOwoJU29ydFF1aWNrKCYoKmRhdGFfcmVzb3VyY2UpLT5kYXRhLCAmKCpkYXRhX3Jlc291cmNlKS0+bG93LCAmKCpkYXRhX3Jlc291cmNlKS0+bGVuZ3RoIC0gMSk7CglBcnJheVByaW50KCYoKmRhdGFfcmVzb3VyY2UpLT5kYXRhLCAmKCpkYXRhX3Jlc291cmNlKS0+bGVuZ3RoKTsKfQoKaW50IG1haW4odm9pZCkKewoJUmVzb3VyY2UgKmRhdGFfcmVzb3VyY2UgPSBOVUxMOwoKCUdsb2JhbEluaXQoJmRhdGFfcmVzb3VyY2UpOwoJQmVuY2htYXJrVGVzdCgmZGF0YV9yZXNvdXJjZSk7CgoJcmV0dXJuIDA7Cn0=