熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> 數據結構 >> 正文

用代碼展示一下合並排序算法

2022-06-13   來源: 數據結構 

#include <iostreamh>

void Merge(int c[]int d[]int lint mint r)

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

int i=l

j=m+

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 sint n)

{//合並大小為s的相鄰子數組

int i=;

while(i<=n*s){

//合並大小為s的相鄰段子數組

Merge(xyii+si+*s);

i=i+*s;

}

//剩余的元素個數少於s

if(i+s<n) Merge(xyii+sn);

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

y[j]=x[j];

}

void MergeSort(int a[]int n)

{

int *b=new int [];

int s=;

while(s<n){

MergePass(absn);//合並到數組b

s+=s;

MergePass(basn);//合並到數組a

s+=s;

}

}

int main()

{

int t[];

cout<<&#;請輸入數組:\n&#;;

cout<<&#;輸入結束\n&#;;

int p=;

int g=;

while(g!=){

cin>>g;

if(g!=)

{ t[p]=g;

p++;

//g++;

}

}

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

cin>>t[g];*/

MergeSort(tp);

for(int i=;i<p;i++)

{

cout<<t[i]<<&#;\n&#;;

}

return ;

}


From:http://tw.wingwit.com/Article/program/sjjg/201404/30582.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.