归并排序模板

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
int n,s[N],res[N];
void merge_sort(int s[],int l,int r)
{
    int mid = (l+r)>>1;
    if(l>=r) return; 
    merge_sort(s,l,mid);
    merge_sort(s,mid+1,r);
    int i=l,k=0,j=mid+1;
    while(i<=mid && j<=r )
    {
        if(s[i]<=s[j]) res[k++] = s[i++];
        else res[k++] = s[j++];
    }
    while(j<=r)
    {
        res[k++] = s[j++];
    }
    while(i<=mid)
    {
        res[k++]=s[i++];
    }
    for(int p=l,m=0;p<=r;p++,m++) s[p]=res[m];
}
int main()
{
    cin>>n;
    for(int i=0;i<n;i++) cin>>s[i];
    merge_sort(s,0,n-1);
    for(int i=0;i<n;i++) cout<<s[i]<<' ';
    return 0;
}

 

posted @ 2024-02-15 20:19  solutide  阅读(19)  评论(0编辑  收藏  举报