归并排序所有代码 题解
2023-12-16 18:20:35
发布于:北京
101阅读
0回复
0点赞
#include<iostream>
using namespace std;
int n;
int m[1050];
void sort(int la,int ra,int lb,int rb){
int i=la,j=lb,cnt=0;
int srt[1050];
while(i<=ra&&j<=rb){
if(m[i]<=m[j]) srt[++cnt]=m[i++];
else srt[++cnt]=m[j++];
}
while(i<=ra) srt[++cnt]=m[i++];
while(j<=rb) srt[++cnt]=m[j++];
for(int i=1;i<=cnt;i++) m[la+i-1]=srt[i];
return;
}
void merge(int l,int r){
if(l>=r) return;
int mid=(l+r)>>1;
merge(l,mid);
merge(mid+1,r);
sort(l,mid,mid+1,r);
for(int i=1;i<=n;i++) cout<<m[i]<<' ';
cout<<endl;
return;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>m[i];
merge(1,n);
return 0;
}
这里空空如也
有帮助,赞一个