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
    

  • 相关阅读:
    【笔记】Hierarchical Attention Networks for Document Classification
    Chart Parser 中 Earley's 算法的应用
    使用 JFlex 生成词法分析器的安装配置及简单示例
    UNIX 系统下退出 git commit 编辑器
    SQL语法
    MySQL 和 Javaweb 的报错合集
    最短路径(SP)问题相关算法与模板
    dfs | Security Badges
    redis哨兵机制图谱
    docker笔记
  • 原文地址:https://www.cnblogs.com/rubylouvre/p/1650253.html
Copyright © 2011-2022 走看看