设为首页 加入收藏

TOP

用代码展示一下合并排序算法
2014-11-24 01:40:38 来源: 作者: 【 】 浏览:6
Tags:代码 展示 合并 排序 算法

#include


void Merge(int c[],int d[],int l,int m,int r)


{//合并c[l:m]和c[m+1:r]到d[l:r]


int i=l,


j=m+1,


k=l;


while((i<=m)&&(j<=r))


if(c[i]<=c[j]) d[k++]=c[i++];


else d[k++]=c[j++];


if(i>m)for(int q=j;q<=r;q++)


d[k++]=c[q];


else for(int q=i;q<=m;q++)


d[k++]=c[q];


}


void MergePass(int x[],int y[],int s,int n)


{//合并大小为s的相邻子数组


int i=0;


while(i<=n-2*s){


//合并大小为s的相邻2段子数组


Merge(x,y,i,i+s-1,i+2*s-1);


i=i+2*s;


}


//剩余的元素个数少于2s


if(i+s

else for(int j=i;j<=n-1;j++)


y[j]=x[j];


}


void MergeSort(int a[],int n)


{


int *b=new int [];


int s=1;


while(s

MergePass(a,b,s,n);//合并到数组b


s+=s;


MergePass(b,a,s,n);//合并到数组a


s+=s;


}


}


int main()


{


int t[20];


cout<<”请输入数组:\n”;


cout<<”输入0结束\n”;


int p=0;


int g=-1;


while(g!=0){


cin>>g;


if(g!=0)


{ t[p]=g;


p++;


//g++;


}


}


/*for(int g=0;g<5;g++)


cin>>t[g];*/


MergeSort(t,p);


for(int i=0;i

{


cout<

}


return 0;


}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇培训学校J2EE高级培训师面试题 下一篇培训学校Java高级培训师面试题

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: