//快排算法
#include<stdio.h>
#include<malloc.h>
#include<time.h>
void quickSort(int arr[],int low,int high)
{
if(high < low ) return;
int i = low,j = high,temp = arr[i];
while(i < j)
{
while(temp < arr[j] && i < j) j--;
if(i < j) arr[i++] = arr[j];
while(temp > arr[i] && i < j) i++;
if(i < j) arr[j--] = arr[i];
}
arr[i] = temp;
quickSort(arr,low,i-1);
quickSort(arr,i+1,high);
}
int main()
{
time_t start;
time_t end;
int *a = (int *)malloc(10000000*sizeof(int));
FILE* fpread;
fpread = fopen("D:\\快排数据\\新建文件夹\\10000000.txt", "r");
if (fpread == NULL)
{
printf("file is error.");
return -1;
}
for (int j = 0; j < 10000000; j++)
{
fscanf(fpread, "%d", &a[j]);
}
fclose(fpread);
fpread = fopen("D:\\快排数据\\新建文件夹\\F.txt", "w");
start=clock();
quickSort(a,0,10000000-1);
end=clock();
printf("排序完成!用时 %f s\n",(double)(end-start)/CLOCKS_PER_SEC);
for(int i =0;i<10000000;i++)
{
fprintf(fpread,"%d ",a[i]);
}
fclose(fpread);
free(a);
return 0;
}
通过快排算法和文件读取及时间的函数的综合使用,可以完成从10000~10000000的数据进行读取存入并计算所需要消耗的时间。