{时间管理}语言各种排序方法及其所耗时间比较程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(时间管理)语言各种排序方法及其所耗时间比较程

#include

#include

#include

#include

#include

constintN=1000;//数据量,用于检测算法质量constintM=1000;//执行次数

//冒泡排序(递增)

voidBubblesort(intr[],intn)

{

intflag=1;//flag为0停止排序

for(inti=1;i

{

flag=0;

for(intj=n-1;j>=i;j--)

if(r[j]

{

intt=r[j];

r[j]=r[j-1];

r[j-1]=t;

flag=1;

}

if(flag==0)

return;

}

}

//快速排序

voidquicksort(intr[],intleft,intright) {

inti,j;

intswap;

i=left;j=right;

swap=r[left];

while(i

{

while((i

if(i

{

r[i]=r[j];

i++;

}

while((ir[i]))i++;

if(i

{

r[j]=r[i];

j--;

}

}

r[i]=swap;

if(i>left)

quicksort(r,left,i-1);

if(i

quicksort(r,i+1,right); return;

}

//堆排序先建立堆voidcreatheap(intr[],inti,intn) {

intj;

intt;

t=r[i];j=2*i;

while(j

{

if((j

{

r[i]=r[j];

i=j;j=2*i;

}

elsej=n;

r[i]=t;

}

}

//堆排序voidheapsort(intr[],intn) {

intt;

for(inti=n/2;i>=0;i--) creatheap(r,i,n);

for(i=n-1;i>=0;i--) {

t=r[0];

r[0]=r[i];

r[i]=t;

creatheap(r,0,i-1);

}

return;

}

//二路归且

voidmerge(intr[],intr1[],intlow,intmid,inthigh)//进行二合壹的函数

{

inti=low,j=mid+1,k=low;

while((i<=mid)&&(j<=high))

{

if(r[i]<=r[j])

r1[k++]=r[i++];

else

r1[k++]=r[j++];

}

while(i<=mid)

r1[k++]=r[i++];

while(j<=high)

r1[k++]=r[j++];

}

voidmergepass(intr[],intr1[],intlength)//用来区分填入merge函数的变量计算式{

inti=0,j;

while(i+2*length<=N)

{

merge(r,r1,i,i+length-1,i+2*length-1);

i=i+2*length;

if(i+length-1

merge(r,r1,i,i+length-1,N-1);

else

for(j=i;j

r1[j]=r[j];

}

voidmergesort(intr[])//二路且归总算法{

intlength=1;

intr1[N+1];

while(length

{

mergepass(r,r1,length);

length=2*length;

mergepass(r1,r,length);

length=2*length;

}

return;

}

//进行输出

voidprint(intr[],intn)

for(inti=0;i<=n-1;i++)

{

if(i%10==0){cout<

cout<

}

cout<

}

//主函数

voidmain()

{

inti,j,k;

intr[N],a[N];

clock_tstart,finish;

doubleduration;

cout<<"请选择排序方式,1、冒泡法;2、快速排序法;3、堆排序法;4、二路且归法"<>j;

srand((unsigned)time(NULL));

for(i=0;i

{

a[i]=rand()%10000;

}

相关文档
最新文档