#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=