归并排序所有代码 题解
2023-12-16 18:20:35
发布于:北京
213阅读
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;
}
这里空空如也

有帮助,赞一个