大佬求看一下
查看原帖
大佬求看一下
319334
⚡小木木子⚡楼主2020/5/11 20:41
#include<cstdio>
using namespace std;
int a[10001],b[10001];
void merge(int l,int r){
    int m,i,j,k;
    if(l==r)    return ;
    m=(l+r)/2;
    merge(l,m);
    merge(m+1,r);
    i=l;
    j=m+1;
    k=l;
    while(i<=m && j<=r){
        if(a[i]<=a[j]){
            b[k]=a[i];
            k++;
            i++;
        }
        else{
            b[k]=a[j];
            k++;
            j++;
        }
    }
    while(i<=m){
        b[k]=a[i];
        k++;
        i++;
    }
    while(j<=r){
        b[k]=a[j];
        k++;
        j++;
    }
    for(int s=l;s<=r;s++)
        a[s]=b[s];
}
int main(){
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d",&a[i]);
    merge(1,n);
    for(int i=1;i<=n;i++)
        printf("%d ",a[i]);
    return 0;
}

大佬看看我写的排序对不对?

多多指教!

2020/5/11 20:41
加载中...