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

    归并排序原理:

     利用分治的思想,通过递归来实现的,

    java代码:

        /**
         * 归并排序:不是原地排序,时间复杂度O(n*longN),稳定排序
         *
         * @param arr
         * @return
         */
        public static int[] guibing(int[] arr) {
            if (arr.length == 1) {
                return arr;
            }
            int mod = arr.length / 2;
            int[] a = new int[mod];
            int[] b = new int[arr.length - mod];
            System.arraycopy(arr, 0, a, 0, mod);
            System.arraycopy(arr, mod, b, 0, arr.length - mod);
            return hebing(guibing(a), guibing(b));
        }
    
      /**
         * 两个有序数组合并
         *
         * @param a
         * @param b
         * @return
         */
        public static int[] hebing(int[] a, int[] b) {
            int[] result = new int[a.length + b.length];
            int index_a = 0, index_b = 0;
            for (int i = 0; i < result.length; i++) {
                if (index_a >= a.length) {
                    result[i] = b[index_b++];
                    continue;
                }
                if (index_b >= b.length) {
                    result[i] = a[index_a++];
                    continue;
                }
                if (a[index_a] <= b[index_b]) {
                    result[i] = a[index_a++];
                } else {
                    result[i] = b[index_b++];
                }
            }
            return result;
        }

    性能分析:

    时间复杂度:O(n*logN)

    空间复杂度:O(n)

    原地排序:否

    稳定排序:是

  • 相关阅读:
    博客园20071027上海聚会
    上海招聘.NET(C#)程序员
    招人
    漂亮的后台WebUi框架(有源码下载)
    js插件库系列导航
    PrestoSQL(trinodb)源码分析 执行(下)
    Extjs4 (二)
    Struts2(1)简介
    css中的字体
    什么是REST架构
  • 原文地址:https://www.cnblogs.com/zhanghaodong/p/10337824.html
Copyright © 2011-2022 走看看