自底向上合并排序

#include<iostream> using namespace std; const int len=5; int sortArrary[len]; //合并 void merge(int s1,int f1,int f2) { int i,j,k; int b[100]; i=s1; j=f1+1; k=s1; while(i<=f1&&j<=f2) { if(sortArrary[i]>sortArrary[j]) { b[k]=sortArrary[j]; j++; } else { b[k]=sortArrary[i]; i++; } k++; } if(j==f2+1) { while(i<=f1) { b[k]=sortArrary[i]; k++; i++; } } for(i=s1;i<k;i++) { sortArrary[i]=b[i]; } } //合并排序 void BottonUpSort() { int i=0, s=1,t=1,time=1; while(t<len) { s=t; t=2*s; i=0; while(i+t<=len) { merge(i+1,i+s,i+t); cout<<"第"<<time++<<"次合并"; for (int l=i+1;l<i+t;l++) { cout<<sortArrary[l]<<" "; } cout<<endl; i=i+t; } if(i+s<len) { merge(i+1,i+s,len); cout<<"第"<<time++<<"次合并"; for (int l=i+1;l<len;l++) { cout<<sortArrary[l]<<" "; } cout<<endl; } } } void print() { cout<<"排序后:"; for(int j=1;j<=len;j++) { cout<<sortArrary[j]<<" "; } } int main() { cout<<"请输入"<<len<<"个数字:"<<endl; for(int i=1;i<=len;i++) { cin>>sortArrary[i]; } cout<<"自底向上合并排序过程:\n"; BottonUpSort(); print(); return 0; }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步