#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void quicksort(int*,int,int);
int partition(int*,int,int);
void swap(int* a,int* b)
{
int temp=*a;
*a=*b;
*b=temp;
}
int main()
{
int n=10000;
int it=0;
printf("Array_size,Time(m/s):\n");
while(it++<10)
{
int* arr
=(int*)malloc(n
*sizeof(int)); if(!arr)
{
printf("Memory allocation failed\n"); return 1;
}
for(int i=0;i<n;i++)
{
}
clock_t start,end;
quicksort(arr,0,n-1);
double timetaken=((double)(end-start))*1000/CLOCKS_PER_SEC;
printf("%d,%0.5f\n",n
,timetaken
);
n+=10000;
}
return 0;
}
void quicksort(int arr[],int low,int high)
{
if(low<high)
{
int j=partition(arr,low,high);
quicksort(arr,low,j-1);
quicksort(arr,j+1,high);
}
}
int partition(int arr[],int low,int high)
{
int pivot=arr[low];
int i=low;
int j=high+1;
while(1)
{
do{
i++;
}while(i<=high && arr[i]<pivot);
do{
j--;
}while(j>=low && arr[j]>pivot);
if(i>=j)break;
swap(&arr[i],&arr[j]);
}
swap(&arr[low],&arr[j]);
return j;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CiNpbmNsdWRlPHRpbWUuaD4KCnZvaWQgcXVpY2tzb3J0KGludCosaW50LGludCk7CmludCBwYXJ0aXRpb24oaW50KixpbnQsaW50KTsKdm9pZCBzd2FwKGludCogYSxpbnQqIGIpCnsKICAgIGludCB0ZW1wPSphOwogICAgKmE9KmI7CiAgICAqYj10ZW1wOwp9CgppbnQgbWFpbigpCnsKICAgIGludCBuPTEwMDAwOwogICAgaW50IGl0PTA7CiAgICBzcmFuZCh0aW1lKE5VTEwpKTsKICAgIAogICAgcHJpbnRmKCJBcnJheV9zaXplLFRpbWUobS9zKTpcbiIpOwogICAgCiAgICB3aGlsZShpdCsrPDEwKQogICAgewogICAgICAgIGludCogYXJyPShpbnQqKW1hbGxvYyhuKnNpemVvZihpbnQpKTsKICAgICAgICBpZighYXJyKQogICAgICAgIHsKICAgICAgICAgICAgcHJpbnRmKCJNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWRcbiIpOwogICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGFycltpXT1yYW5kKCklMTAwMDA7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGNsb2NrX3Qgc3RhcnQsZW5kOwogICAgICAgIHN0YXJ0PWNsb2NrKCk7CiAgICAgICAgcXVpY2tzb3J0KGFyciwwLG4tMSk7CiAgICAgICAgZW5kPWNsb2NrKCk7CiAgICAgICAgCiAgICAgICAgZG91YmxlIHRpbWV0YWtlbj0oKGRvdWJsZSkoZW5kLXN0YXJ0KSkqMTAwMC9DTE9DS1NfUEVSX1NFQzsKICAgICAgICBwcmludGYoIiVkLCUwLjVmXG4iLG4sdGltZXRha2VuKTsKICAgICAgICAKICAgICAgICBmcmVlKGFycik7CiAgICAgICAgbis9MTAwMDA7CiAgICB9CiAgICByZXR1cm4gMDsKfQoKdm9pZCBxdWlja3NvcnQoaW50IGFycltdLGludCBsb3csaW50IGhpZ2gpCnsKICAgIGlmKGxvdzxoaWdoKQogICAgewogICAgICAgIGludCBqPXBhcnRpdGlvbihhcnIsbG93LGhpZ2gpOwogICAgICAgIHF1aWNrc29ydChhcnIsbG93LGotMSk7CiAgICAgICAgcXVpY2tzb3J0KGFycixqKzEsaGlnaCk7CiAgICB9Cn0KCmludCBwYXJ0aXRpb24oaW50IGFycltdLGludCBsb3csaW50IGhpZ2gpCnsKICAgIGludCBwaXZvdD1hcnJbbG93XTsKICAgIGludCBpPWxvdzsKICAgIGludCBqPWhpZ2grMTsKICAgIHdoaWxlKDEpCiAgICB7CiAgICAgICAgZG97CiAgICAgICAgICAgIGkrKzsKICAgICAgICB9d2hpbGUoaTw9aGlnaCAmJiBhcnJbaV08cGl2b3QpOwogICAgICAgIGRvewogICAgICAgICAgICBqLS07CiAgICAgICAgfXdoaWxlKGo+PWxvdyAmJiBhcnJbal0+cGl2b3QpOwogICAgICAgIGlmKGk+PWopYnJlYWs7CiAgICAgICAgc3dhcCgmYXJyW2ldLCZhcnJbal0pOwogICAgfQogICAgc3dhcCgmYXJyW2xvd10sJmFycltqXSk7CiAgICByZXR1cm4gajsKfQo=
Array_size,Time(m/s):
10000,1.05100
20000,2.64200
30000,2.10200
40000,3.15200
50000,4.14500
60000,5.25400
70000,5.89500
80000,7.35500
90000,7.99700
100000,8.40800