归并排序

Posted 512178509

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了归并排序相关的知识,希望对你有一定的参考价值。

技术分享图片
 /**
     * 借助临时数组进行移动
     */
    @Test
    public void mergerSort(){
        int[] arr={1,4,5,6,7,8,3,2,4,6,7,3,5,6,4,3,2};
        int[] temp = new int[arr.length];
        mergerSort(arr,0,arr.length-1,temp);
        System.out.println(Arrays.toString(arr));

    }

    public void mergerSort(int[] arr,int left,int right,int[] temp){
        if(left<right){
            int mid=(right+left)/2;
            mergerSort(arr,left,mid,temp);
            mergerSort(arr,mid+1,right,temp);
            merger(arr,left,mid,right,temp);
        }
    }

    public void merger(int[] arr,int left,int mid,int right,int[] temp){
        int i=left;//左序列
        int j=mid+1;//右序列
        int t=0;//临时序列
        while (i<=mid && j<=right){
            if(arr[i]<=arr[j]){
                temp[t++]=arr[i++];
            }else {
                temp[t++]=arr[j++];
            }
        }

        while (i<=mid){
            temp[t++]=arr[i++];
        }
        while (j<=right){
            temp[t++]=arr[j++];
        }
        t=0;
        while (left<=right){
            arr[left++]=temp[t++];
        }

    }
View Code

归并排序算法实现

大致思路:

1、首先对数组进行切分,分成最小单元

2、然后进行数据合并,使用临时进行

比如  1 ,4,,5,6,7,8   分成独立的个体,之后组织    14     56     78   之后在   14和56合并排序,之后在和78排序     

 

以上是关于归并排序的主要内容,如果未能解决你的问题,请参考以下文章

python代码实现归并排序(Merge Sort )

排序之外部排序

Python代码实现归并排序

Python代码实现归并排序

算法排序02——归并排序介绍及其在分治算法思想上与快排的区别(含归并代码)

排序算法之归并排序