zoukankan      html  css  js  c++  java
  • 迭代合并排序算法

     1 function merge(left, right) {
     2     var result = [];
     3 
     4     while (left.length > 0 && right.length > 0) {
     5         if (left[0] < right[0]) {
     6             result.push(left.shift());
     7         } else {
     8             result.push(right.shift());
     9         }
    10     }
    11     return result.concat(left).concat(right);
    12 }
    13 
    14 function mergeSort(items) {
    15     if (items.length == 1) {
    16         return items;
    17     }
    18 
    19     var work = [];
    20     for (var i = 0, len = items.length; i < len; i++) {
    21         work.push([items[i]]);
    22     }
    23     work.push([]); //如果数组长度为奇数
    24     for (var lim = len; lim > 1; lim = (lim + 1) / 2) {
    25         for (var j = 0, k = 0; k < lim; j++, k += 2) {
    26             work[j] = merge(work[k], work[k + 1]);
    27         }
    28         work[j] = []; //如果数组长度为奇数
    29     }
    30     return work[0];
    31 }
  • 相关阅读:
    Bessie Goes Moo
    小P的强力值
    Max Flow
    约瑟夫
    Moocryption
    杂务
    排行榜
    银行贷款
    轰炸
    Contaminated Milk
  • 原文地址:https://www.cnblogs.com/qzsonline/p/2560254.html
Copyright © 2011-2022 走看看