自底向上排序

发布时间:2024-04-29 14:06 发布:上海旅游网

问题描述:

#include<stdlib.h>
#include <iostream.h>
#include <stdio.h>
#include <time.h>

long starttime=clock();
int n=20;
void merge(int a[],int p,int q,int r);

void main()
{
int a[20];
int i,s;
srand(time(0));
for(i=0;i<20;i++){
a[i]=rand()%100;
cout<<a[i]<<endl;
}//for 产生随机数组
cout<<endl<<endl;
int t=1;
while(t<n){
s=t;
t=2*s;
i=0;
while((i+t)<=n){
merge(a,i+1-1,i+s-1,i+t-1);
i=i+t;
}//while
if(i+s<n)
merge(a,i+1-1,i+s-1,n-1);
}//while
for(i=0;i<n;i++)cout<<a[i]<<endl;
long endtime=clock();
cout<<"运行时间为"<<endtime-starttime<<"ms"<<endl;
}//main

void merge(int a[],int p,int q,int r)
{
int b[20];
int s,t,k,i,j;
s=p;t=q+1;k=p;
while((s<=q)&&(t<=r)){
if(a[s]<=a[t]){
b[k]=a[s];s=s+1;
}//if
else{
b[k]=a[t];t=t+1;
}//else
k=k+1;
}//while
if(s=q+1){
j=k;
for(i=t;i<=r;i++){
b[j]=a[i];j=j+1;
}//for
}//if
else{
j=k;
for(i=s;s<=q;i++){
b[j]=a[i];j=j+1;
}//for
}//else
j=p;
for(i=p;i<=r;i++){
a[j]=b[i];j=j+1;
}//for
}//merge

谁能帮我看一下这个自底向上排序的程序出了什么问题?

问题解答:

自底向上排序这个旅游问答期待您的解答,请登录账号或关注微信公众号回答这个问题。

热点新闻