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);
 }
}