zoukankan      html  css  js  c++  java
  • 归并排序

    基础排序参考
    https://blog.csdn.net/yushiyi6453/article/details/76407640

    归并排序

    归并排序从小到大排序:首先让数组中的每一个数单独成为长度为1的区间,然后两两一组有序合并,得到长度为2的有序区间,依次进行,直到合成整个区间。

    代码实现

    package sort;

    import java.util.Scanner;

    /**
     * @author 王筱哲
     * @Data: 2019/8/1
     * @Time: 15:12
     */

    public class MergeSort {
        /**
         * 归并排序
         */

        public static void main(String[] args{
            Scanner scanner = new Scanner(System.in);
            int[] arr = new int[5];
            for (int i = 0; i < arr.length; i++) {
                arr[i] = scanner.nextInt();
            }
            int[] ints = mergeSort(arr, 0, arr.length - 1);
            for (int i = 0; i < ints.length; i++) {
                System.out.println(arr[i]);
            }
        }

        public static int[] mergeSort(int[] arr, int left, int right{
            if (left == right) {
                return arr;
            }
            int mid = (left + right) / 2;
            mergeSort(arr, 0, mid);
            mergeSort(arr, mid + 1, right);
            mergn(arr, left, mid, right);
            return arr;
        }

         public static void mergn(int[] arr, int l, int m, int r{
            int[] help = new int[r - l + 1];
            int i = 0;
            int p1 = l;
            int p2 = m + 1;
            while (p1 <= m && p2 <= r) {
                help[i++] = arr[p1] < arr[p2] ? arr[p1++] : arr[p2++];
            }
            /**p1没有越界,p2必定越界*/
            while (p1 <= m) {
                help[i++] = arr[p1++];
            }
            /**p2没有越界,p1必定越界*/
            while (p2 <= r) {
                help[i++] = arr[p2++];
            }

            for (i = 0; i < help.length; i++) {
                arr[l + i] = help[i];
            }
        }
    }

    平均时间复杂度:O(nlogn) 最坏时间复杂度:O(nlogn) 空间复杂度:O(n) 稳定

  • 相关阅读:
    寒假练习集中贴
    7-49 打印学生选课清单 (25分)
    7-47 打印选课学生名单 (25分)
    进阶实验5-3.3 基于词频的文件相似度 (30分)-哈希
    进阶实验5-3.4 迷你搜索引擎 (35分)-哈希
    7-24 树种统计 (25分)-二叉排序树or快速排序
    7-25 朋友圈 (25分)-并查集
    进阶实验6-3.4 拯救007(升级版) (30分)-BFS
    基础实验6-2.3 拯救007 (25分)-DFS
    进阶实验4-3.5 哈夫曼编码 (30分)-最优二叉树
  • 原文地址:https://www.cnblogs.com/wuhen8866/p/11907523.html
Copyright © 2011-2022 走看看