归排

class Mc{

    void mergeSort(int a[],int left,int right){
    if(left<right){
        int i =(left+right)/2;
        int[] b=new int[a.length];
        mergeSort(a,left,i);
        mergeSort(a,i+1,right);
        merge(a,b,left,i,right);
        copy(a,b,left,right);
    }
    }

    void merge(int c[],int d[],int l,int m,int r){
        int i=l,
            j=m+1,
            k=l;

        while((i<=m)&&(j<=r))
            if(c[i]<=c[j])
                d[k++]=c[i++];
            else d[k++]=c[j++];
        if(i>m)
            for(int q=j;q<=r;q++)
                d[k++]=c[q];
        else
            for(int q=i;q<=m;q++)
                d[k++]=c[q];

    }

    void copy(int a[],int b[],int l,int r){
        for(int i=l;i<=r;i++){
            a[i]=b[i];
        }
    }

public static void main(String[] args) {
    int [] a={6,8,3,1,8,9,3,6,1};
    Mc mc=new Mc();
    mc.mergeSort(a, 0, a.length-1);
    for(int i=0;i<a.length;i++){
        System.out.print(" "+a[i]);
    }
}
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容