A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ringfingers 中级黑马   /  2015-10-7 21:53  /  467 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.Arrays;

publicclass mergingSort {

inta[]={,56,17,18,23,34,15,34,12,64,5,4,62,99,98,54};

publicmergingSort(){
    sort(a,0,a.length-1);
    for(int i=0;i<a.length;i++)
       System.out.println(a[i]);
}

publicvoid sort(int[] data, int left, int right) {
    // TODO Auto-generatedmethod stub
    if(left<right){
        //找出中间索引
        int center=(left+right)/2;
        //对左边数组进行递归
        sort(data,left,center);
        //对右边数组进行递归
        sort(data,center+1,right);
        //合并
        merge(data,left,center,right);      
    }

}

publicvoid merge(int[] data, int left, int center, int right) {
    // TODO Auto-generatedmethod stub
    int [] tmpArr=newint[data.length];
    int mid=center+1;
    //third记录中间数组的索引
    int third=left;
    int tmp=left;
    while(left<=center&&mid<=right){
        //从两个数组中取出最小的放入中间数组
        if(data[left]<=data[mid]){
            tmpArr[third++]=data[left++];
        }else{
            tmpArr[third++]=data[mid++];
        }

    }

    //剩余部分依次放入中间数组
    while(mid<=right){
        tmpArr[third++]=data[mid++];
    }

    while(left<=center){
        tmpArr[third++]=data[left++];
    }

    //将中间数组中的内容复制回原数组
    while(tmp<=right){
        data[tmp]=tmpArr[tmp++];
    }
    System.out.println(Arrays.toString(data));
}
}

4 个回复

倒序浏览
可以,自己写的么?666
回复 使用道具 举报
学习学习
回复 使用道具 举报
表演个希尔排序看。。。
回复 使用道具 举报
学习到了~!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马