归并排序-长度为n的整数数列。 请你使用归并排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。 输入格式 输入共两行,第一行包含整数 n。 第二行包含 n 个整数(所有整数均在

#include<iostream>
using namespace std;
const int N=1e5+10;
int n;
int tm[N],a[N];
void qsort(int a[],int l,int r)
{
    
    
    if(l>=r)
    return ;
    int mid=(l+r)>>1;
    int k=0,i=l,j=mid+1;
    qsort(a,l,mid);
    qsort(a,mid+1,r);
    while(i<=mid&&j<=r)
    {
    
    
        if(a[i]<=a[j]) tm[k++]=a[i++];
        else tm[k++]=a[j++];
    }
    while(i<=mid)
    tm[k++]=a[i++];
    while(j<=r)
    tm[k++]=a[j++];
    for(i=l,j=0;i<r+1;i++,j++)
    a[i]=tm[j];
}
int main()
{
    
    
    scanf("%d",&n);//scanf耗时比cin小
    for(int i=0;i<n;i++)
    scanf("%d",&a[i]);
    qsort(a,0,n-1);
    for(int i=0;i<n;i++)
    {
    
    
        cout<<a[i]<<" ";
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_46443659/article/details/109962067