[模板]归并排序

来源:互联网 发布:一元微信提现赚钱软件 编辑:程序博客网 时间:2024/06/06 12:50

一个二分水题
借用了一下百度的图片

代码如下

int n,f[100010],g[100010];void sort(int l,int r){    if(l==r)        rt;    int mid=(l+r)>>1;    sort(l,mid);    sort(mid+1,r);    int t1=l,t2=mid+1,t3=l;    fr(i,l,r)        f[i]=g[i];    while(t1<=mid||t2<=r)        if(t1>mid||f[t1]>f[t2]&&t2<=r)        {            g[t3]=f[t2];            t3++;            t2++;        }        else        {            g[t3]=f[t1];            t1++;            t3++;        }}int main(){    n=read();    fr(i,1,n)        g[i]=read();    sort(1,n);    fr(i,1,n)        printf("%d%c",g[i],i==n?'\n':' ');    rt 0;}