func.h
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 100000000
#define SWAP(a,b) {int temp;temp=a;a=b;b=temp;}
//void a_quicksort(int*,int,int);
//int partition(int* ,int,int);
int compare(const void* ,const void* );
sort.c
#include"func.h"
int compare(const void* a,const void* b)
{
int *p0=(int *) a;
int *p1=(int *) b;
return *p0-*p1;
}
main.c
#include"func.h"
int main()
{
int *a=NULL;
int i;
time_t bg,end;
srand(time(NULL));
a=(int *)malloc(N*sizeof(int));
for(i=0;i<N;i++)
{
a[i]=rand()%1000;
}
time(&bg);
qsort(a,N,sizeof(int),compare);
//a_quicksort(a,0,N-1);
time(&end);
printf("time=%d\n",end-bg);
free(a);
system("pause");
return 0;
}
附自己实现快排的代码
int partition(int* a,int left,int right)
{
int i,k;
k=left;
for(i=left;i<right;i++)
{
if(a[i]<a[right])
{
SWAP(a[i],a[k]);
k++;
}
}
SWAP(a[k],a[right]);
return k;
}
void a_quicksort(int *a,int left,int right)
{
int pivot;
if(left<right)
{
pivot=partition(a,left,right);
a_quicksort(a,left,pivot-1);
a_quicksort(a,pivot+1,right);
}
}
原文:http://www.cnblogs.com/whsll/p/6280348.html