算法(第四版)归并排序 merge方法

   public static void main(String[] args){

        Integer[] papapa = {1,4,7,9,12,16,2,5,8,10,11,17};
        merge(papapa,0,11,5);


        for (Integer value:papapa) {

            StdOut.println(value);
        }

    }

//    public static Comparable[] sort(Comparable[] intList){
//
//
//    }


    public static void merge(Comparable[] intList,int low,int high,int mid){

        Comparable[] tmp = new Comparable[intList.length];
        int i = low;
        int j = mid+1;
        int start = low;
        while(i<=mid || j<=high){
            //处理边界条件 当有一方到达边界
            if(i>mid){
                tmp[start++] = intList[j++];
                continue;
            }else if(j>high){
                tmp[start++] = intList[i++];
                continue;
            }
            if (less(intList[i],intList[j])){
                tmp[start++] = intList[i++];
            }else{
                tmp[start++] = intList[j++];
            }
        }
        //把临时数组的内容覆盖到原数组
        for(int q=low;q<=high;q++){
            intList[q] = tmp[q];
        }

    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容