归并排序

Posted weishao-lsv

tags:

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

 

public static int[] mergeSort(int[] arr, int left,int right) {
        if (left < right){
            // 取分割位置
            int middle = (left + right) / 2;
            // 递归划分数组左序列
            mergeSort(arr, left, middle);
            // 递归划分数组右序列
            mergeSort(arr, middle+1, right);
            //将左数组和右数组进行归并
            merge(arr, left, middle, right);
        }
        return arr;
    }

    private static void merge(int[] arr, int left, int middle,int right) {
        int[] tempArray = new int[arr.length];  
        int leftEnd = middle;
        int rightStart = middle+1;
        // 临时数组的下标
        int tempIndex = left;
        int tmp = left;
        // 先循环两个区间段都没有结束的情况
        while ((left <= leftEnd) && (rightStart <= right)){
            // 左边的比右边的小,先插入左边的
            if (arr[left] < arr[rightStart]){
                tempArray[tempIndex++] = arr[left++];
            }else{
                tempArray[tempIndex++] = arr[rightStart++];
            }
        }
        // 判断左序列是否结束
        while (left <= leftEnd){
            tempArray[tempIndex++] = arr[left++];
        }
        // 判断右序列是否结束
        while (rightStart <= right){
            tempArray[tempIndex++] = arr[rightStart++];
        }
        // 将临时数组中的内容拷贝回原数组中  
        // (原left-right范围的内容被复制回原数组)
        while (tmp <= right) {  
            arr[tmp] = tempArray[tmp++];  
        } 
    }

 

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

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

排序之外部排序

Python代码实现归并排序

Python代码实现归并排序

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

排序算法之归并排序