当前位置:   article > 正文

归并排序(Java语言实现)_归并排序java

归并排序java

归并排序:
归并排序是利用归并的思想实现的排序方法,该算法采用分治策略(分治法将问题分成一些小的问题然后递归求解,而治的阶段则将分的阶段得到的各结果合在一起,即分而治之)。
归并排序的基本思想图解
在这里插入图片描述
归并(和并)的思想图解---->合并相邻有序子序列
在这里插入图片描述
代码实现该算法:

 //分和治(合)的方法
    public static void mergeSort(int[] arr, int left, int right, int[] temp) {
        if(left < right) {
            int mid = (left + right) / 2;
            //向左递归分解
            mergeSort(arr,left,mid,temp);
            //向右递归分界
            mergeSort(arr,mid+1,right,temp);
            //合并
            merge(arr,left,mid,right,temp);
        }
    }

    //合并的方法
    /**
     *
     * @param arr 待排序数组
     * @param left 左边有序序列的初始索引
     * @param mid 中间索引
     * @param right 右边索引
     * @param temp 临时数组,做中转使用
     */
    public static void merge(int[] arr,int left, int mid, int right, int[] temp) {
        int i = left; //左边有序序列的初始索引
        int j = mid + 1; //右边有序序列的初始索引
        int t = 0; //指向temp数组的当前索引
        while(i <= mid && j <= right) {
            if(arr[i] > arr[j]) {
                temp[t++] = arr[j++];
            } else {
                temp[t++] = arr[i++];
            }
        }
        //把有剩余数据的一边的数据全部依次填充到temp中
        while(i <= mid) {
            temp[t++] = arr[i++];
        }
        while(j <= right) {
            temp[t++] = arr[j++];
        }
        //将temp数组中的数据拷贝到arr数组中去
        t = 0;
        int tempLeft = left;
        while(tempLeft <= right) {
            arr[tempLeft++] = temp[t++];
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47

测试程序:

    public static void main(String[] args) {
        int[] arr = {8,4,5,-1,3,12,2};
        int[] temp = new int[arr.length];
        mergeSort(arr,0, arr.length-1,temp);
        System.out.println(Arrays.toString(arr));
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

运行结果:
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/67309
推荐阅读
相关标签
  

闽ICP备14008679号