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
    

  • 相关阅读:
    C# NAudio录音和播放音频文件及实时绘制音频波形图(从音频流数据获取,而非设备获取)
    C# NAudio录音和播放音频文件-实时绘制音频波形图(从音频流数据获取,而非设备获取)
    C# 录音和播放录音-NAudio
    转载:需求分析师和产品经理有什么区别?
    商业分析师
    网络基础概念
    软件需求工程
    微信APP分析报告
    产品经理的工作职责
    如何编写产品分析报告
  • 原文地址:https://www.cnblogs.com/rubylouvre/p/1650253.html
Copyright © 2011-2022 走看看