首页 > 编程语言 > 详细

归并排序模板

时间:2019-12-22 23:34:06      阅读:84      评论:0      收藏:0      [点我收藏+]
int a[500002];
int b[500002];
void mergesort(int l,int mid,int r){ //使l~mid和mid~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];
}
void msort(int ll,int rr){ //排序从ll~rr的数列
        int mid,s=2;
        while(s<rr-ll+1){
            for(r=ll+s-1;r<=rr;r+=s){
                l=r-s+1;mid=l+(s-1)/2;
                mergesort(l,mid,r);
            }
            mergesort(l,r-s,rr);
            s*=2;
        }
}

归并排序模板

原文:https://www.cnblogs.com/MayDayMemory/p/12081605.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!