07-归并排序算法

Posted denluoyia

tags:

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

归并排序算法

归并排序:利用分而治之的思想。

归并排序代码

public static void merge(int[] arr, int left, int mid, int right){
    int[] temp = new int[right - left + 1]; //新开一个临时数组存放每一代gap排好序的数组
    int i = left, j = mid + 1, k = 0;
    while (i <= mid && j <= right){
        if (arr[i] < arr[j]){
            temp[k++] = arr[i++];
        }else{
            temp[k++] = arr[j++];
        }
    }

    while (i <= mid){
        temp[k++] = arr[i++];
    }

    while (j <= right){
        temp[k++] = arr[j++];
    }

    for (int x = 0; x < k; x++){
        arr[left+x] = temp[x];
    }
}

public static void mergeSort(int arr[], int left, int right){
    if (left < right){
        int mid = (left + right) / 2;
        mergeSort(arr, left, mid);
        mergeSort(arr, mid+1, right);
        merge(arr, left, mid, right);
    }
}

测试样例

int[] arr = {249386715};
mergeSort(arr, 08);
    for (int x : arr){
    System.out.print(x + " ");
}

结果:

1 2 3 4 5 6 7 8 9 

----- end -----

 

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

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

排序算法之归并排序

排序算法归并排序

Java 归并排序算法

Java 归并排序算法

PHP实现归并排序算法(代码实例)