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

    具体原理可看这里

    javascript版本:

            function merge(left, right){
              var result = [];
              while (left.length > 0 && right.length > 0){
                if (left[0] < right[0]){
                  result.push(left.shift());//把最小的最先取出,放到结果集中
                } else {
                  result.push(right.shift());
                }
              } return result.concat(left).concat(right);//剩下的就是合并,这样就排好序了
            }
            function mergeSort(array){
              if (array.length == 1) {
                return array;
              }
              var middle = Math.floor(array.length / 2),//求出中点
              left = array.slice(0, middle),//分割数组
              right = array.slice(middle);
              return merge(mergeSort(left), mergeSort(right));//递归合并与排序
            }
    

    ruby版本:

      def merge(left, right)
        final = []
        until left.empty? or right.empty?
          final << ( left.first < right.first ? left.shift : right.shift )
        end
        final + left + right
      end
      def mergeSort(array)
        return array if array.size < 2
        left = array.first(array.size/2)
        right = array.last(array.size - array.size/2)
        merge(mergeSort(left), mergeSort(right))
      end
    

  • 相关阅读:
    js注意点:数组比较大小方法及数组与对象的区别
    ubuntu开通ftp虚拟用户
    linux(centos)禁止升级内核的办法
    解决ubuntu新建用户后,tab键不能使用的问题
    ubuntu下php7+mysql+nginx安装笔记
    使用nginx+lua+GraphicsMagick实现图片自动 裁剪
    mysql5.7配置文件(仅供参考)
    ubuntu下安装基于Apache的SVN服务器
    Linux CentOS 7.X 如何修改内核启动默认顺序
    Linxu下Redis安装
  • 原文地址:https://www.cnblogs.com/rubylouvre/p/1650253.html
Copyright © 2011-2022 走看看