归并排序

归并排序

const int N=1e5+10;
int a[N],b[N];
int n;

void merge_sort(int l,int r)
{
    if(l>=r) return;
    int mid=l+r>>1;
    merge_sort(l,mid);
    merge_sort(mid+1,r);

    int i=l,j=mid+1;
    for(int k=l;k<=r;k++)
        if(j>r || (i<=mid && a[i]<=a[j])) b[k]=a[i++];
        else b[k]=a[j++];

    for(int k=l;k<=r;k++) a[k]=b[k];
}

int main()
{
    cin>>n;

    for(int i=0;i<n;i++) cin>>a[i];

    merge_sort(0,n-1);

    for(int i=0;i<n;i++) cout<<a[i]<<' ';
    cout<<endl;

    //system("pause");
}
posted @ 2020-08-25 17:26  Dazzling!  阅读(79)  评论(0编辑  收藏  举报