首页 > 其他 > 详细

计算对一亿个数进行快排所用时间

时间:2017-01-13 00:58:24      阅读:275      评论:0      收藏:0      [点我收藏+]

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!