亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Javascript排序算法之合并排序(歸并排序)的2個例子

2019-11-20 20:51:45
字體:
來源:轉載
供稿:網友

歸并排序(Merge sort)是建立在歸并操作上的一種有效的排序算法。該算法是采用分治法(Divide and Conquer)的一個非常典型的應用。

歸并(Merge)排序法是將兩個(或兩個以上)有序表合并成一個新的有序表,即把待排序序列分為若干個子序列,每個子序列是有序的。然后再把有序子序列合并為整體有序序列。

歸并排序是建立在歸并操作上的一種有效的排序算法。該算法是采用分治法(Divide and Conquer)的一個非常典型的應用。將已有序的子序列合并,得到完全有序的序列;即先使每個子序列有序,再使子序列段間有序。若將兩個有序表合并成一個有序表,稱為2-路歸并。

歸并操作的過程如下:

1.申請空間,使其大小為兩個已經排序序列之和,該空間用來存放合并后的序列
2.設定兩個指針,最初位置分別為兩個已經排序序列的起始位置
3.比較兩個指針所指向的元素,選擇相對小的元素放入到合并空間,并移動指針到下一位置
4.重復步驟3直到某一指針達到序列尾
5.將另一序列剩下的所有元素直接復制到合并序列尾

示例1:

復制代碼 代碼如下:

/**
 * 合并操作(merge),也叫合并算法,指的是將兩個已經排序的序列合并成一個序列的操作。
 * 合并排序算法依賴合并操作。
 *
 * 合并操作的過程如下:
 *
 * 1、申請空間,使其大小為兩個已經排序序列之和,該空間用來存放合并后的序列
 * 2、設定兩個指針,最初位置分別為兩個已經排序序列的起始位置
 * 3、比較兩個指針所指向的元素,選擇相對小的元素放入到合并空間,并移動指針到下一位置
 * 4、重復步驟3直到某一指針達到序列尾
 * 5、將另一序列剩下的所有元素直接復制到合并序列尾
 *
 */

function mergeSort(items) {
    if (items.length < 2) {
        return items;
    }

    var middle = Math.floor(items.length / 2),
        left = items.slice(0, middle),
        right = items.slice(middle),
        params = merge(mergeSort(left), mergeSort(right));

    params.unshift(0, items.length);
    items.splice.apply(items, params);

    return items;

    function merge(left, right) {
        var result = [],
            il = 0,
            ir = 0;

        while (il < left.length && ir < right.length) {
            if (left[il] < right[ir]) {
                result.push(left[il++]);
            } else {
                result.push(right[ir++]);
            }
        }
        return result.concat(left.slice(il)) .concat(right.slice(ir));
    }
}

// test
var arr = [2, 1, 3, 12, 5, 66, 23, 87, 15, 32];

mergeSort(arr);

示例2:

復制代碼 代碼如下:

<script type="text/javascript">
//document.write("----------歸并排序-----復雜排序里唯一一個穩定的,時間復雜度為nlogn------<br />");
//var array = new Array(12, 25, 32, 16, 18, 27, 59, 69, 36);
var count = 0;
//調用排序方法進行排序
//mSort(array, array, 0, array.length - 1);
//source源數組
//dest目標數組
//s起始下標
//t目標下標
function mSort(source, dest, s, t) {
 var result = "";
 var m; //取中間值

 var dest2 = new Array();
 if (s == t) {
   dest[s] = source[s];
    }
  else {
       m = Math.floor((s + t) / 2);
     mSort(source, dest2, s, m);
      mSort(source, dest2, m+1 , t);
       merge(dest2, dest, s, m, t);
      /* 輸出結果 */
      result += "<br />第" + ++count + "遍排序的結果是:";
   for (var n = 0; n < dest.length; n++) {
          result+= array[n] + ",";
        }
     /* 輸出結果結束 */
 }
 return result;
}

/* 輸出結果結束 */
//將兩個數組按照從小到大的順序融合
//source原數組
//dest排序后的數組
//s第一個下標
//m第二個數組下表
//n總長度
function merge(source, dest, s, m, n) {
 for (var j = m+1, k = s; j <= n && s <= m; k++) {
   if (source[s] < source[j]) {
       dest[k] = source[s++];
     }
    else {
         dest[k] = source[j++];
       }
  }

 //將剩余排不完的有序數組加入到dest的末端
   if (s <= m) {
        for (var l = 0; l <= m - s; l++) {
         dest[k + l] = source[s+l];
      }
  }
 if (j <= n) {
      for (var l = 0; l <= n - j; l++) {
       dest[k + l] = source[j+l];
       }
 }
}
//document.write("<br /><br />")
</script>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲成人a级网| 九九久久久久久久久激情| 国产精品久久久久久婷婷天堂| 久久精品国产电影| 色综合久综合久久综合久鬼88| 国产精品jizz在线观看麻豆| 久久最新资源网| 欧美在线视频在线播放完整版免费观看| 国产精品久久久久99| 日韩av在线播放资源| 欧美一区二区视频97| 综合网日日天干夜夜久久| 亚洲黄页网在线观看| 亚洲xxxx做受欧美| 91wwwcom在线观看| 国产噜噜噜噜噜久久久久久久久| 亚洲欧美国产另类| 色中色综合影院手机版在线观看| 2019国产精品自在线拍国产不卡| 亚洲精品第一国产综合精品| 国产精品日韩欧美综合| 亚洲电影免费在线观看| 欧美成人精品一区二区三区| 亚洲人成网站777色婷婷| 国产精品久久久久久久app| 国模极品一区二区三区| 久久精品99国产精品酒店日本| 国内成人精品视频| 久久久久久97| 亚洲欧美日韩国产精品| 日韩av在线影视| 777午夜精品福利在线观看| 欧美日韩人人澡狠狠躁视频| 亚洲午夜精品久久久久久久久久久久| 国模吧一区二区| 欧美激情亚洲激情| 亚洲国产精品成人av| 国产日产久久高清欧美一区| 91禁外国网站| 国产精品激情av电影在线观看| 国产精品香蕉国产| 日韩成人久久久| 日韩欧美高清在线视频| 久久精品国产久精国产一老狼| 成人激情免费在线| 成人深夜直播免费观看| 国内成人精品视频| 亚洲国产精品专区久久| 久久久久久高潮国产精品视| 欧美日韩高清在线观看| 欧美日韩国产91| 国产精品久久久久av免费| 国产999精品久久久影片官网| 国内精久久久久久久久久人| 国产亚洲精品美女| 一本一道久久a久久精品逆3p| 国产精品国语对白| 欧美激情按摩在线| 国产精品美女免费视频| 日韩欧美在线视频日韩欧美在线视频| 国产xxx69麻豆国语对白| 亚洲在线免费视频| 欧美激情二区三区| 亚洲www在线| 国产成人精品久久二区二区91| 亚洲一区av在线播放| 久久综合久中文字幕青草| 伊人精品在线观看| 一本色道久久88亚洲综合88| 午夜精品三级视频福利| 91社影院在线观看| 日韩免费在线免费观看| 亚洲成年人影院在线| 一本一道久久a久久精品逆3p| 国产精品丝袜白浆摸在线| 亚洲欧美福利视频| 国产精品久久久久久搜索| 欧美在线视频播放| 欧美大学生性色视频| 亚洲欧美在线免费观看| 97精品久久久中文字幕免费| 97超级碰在线看视频免费在线看| 国内精品一区二区三区四区| 91高清视频免费观看| 亚洲在线www| 青青a在线精品免费观看| 尤物99国产成人精品视频| 日韩中文字幕在线精品| 亚洲欧美中文日韩在线v日本| 国产精品女主播| 在线观看成人黄色| 欧美高清电影在线看| 亚洲国产精品高清久久久| 精品日本高清在线播放| 久久久久久999| 久久偷看各类女兵18女厕嘘嘘| 国产精品主播视频| 国产免费一区二区三区在线观看| 欧美亚洲国产另类| 国产精品综合不卡av| 久久久久久综合网天天| 国产精品久久久av久久久| 欧美激情亚洲另类| 日韩中文字幕不卡视频| 国产在线精品成人一区二区三区| 国产精品国产三级国产aⅴ9色| 4438全国亚洲精品在线观看视频| 日韩中文字幕免费| 日韩欧美福利视频| 国产精品高潮粉嫩av| 成人免费在线网址| 91性高湖久久久久久久久_久久99| 一区国产精品视频| 国语自产精品视频在线看| 精品久久久久久久久中文字幕| 午夜精品99久久免费| 国产成人在线亚洲欧美| 国产精品网红直播| 国产精品日韩欧美大师| 亚洲精品久久久久久下一站| 欧美国产亚洲视频| 欧美成人激情视频免费观看| 日本高清视频精品| 国产精品视频免费在线观看| 国产精品青草久久久久福利99| 久久综合色影院| 国产综合在线看| 亚洲精品91美女久久久久久久| 国外成人性视频| 91av在线播放视频| 国产精品视频免费在线| 中文字幕精品视频| 欧美精品久久久久久久久久| 91免费的视频在线播放| 日韩美女写真福利在线观看| 综合136福利视频在线| 久热精品视频在线观看| 国产精国产精品| 国产精品91久久久| 96sao精品视频在线观看| 91免费的视频在线播放| 亚洲国产另类 国产精品国产免费| 中文字幕av一区二区三区谷原希美| 欧美小视频在线| 懂色av影视一区二区三区| 狠狠躁夜夜躁人人躁婷婷91| 国产精品91免费在线| 亚洲欧洲一区二区三区久久| 黑人巨大精品欧美一区二区一视频| 久久久久女教师免费一区| 色播久久人人爽人人爽人人片视av| 在线观看日韩www视频免费| 久久精品久久精品亚洲人| 韩国三级日本三级少妇99| 久久亚洲综合国产精品99麻豆精品福利| 亚洲图片在区色| 成人免费淫片视频软件| 成人免费视频97| 亚洲国产精久久久久久久| 欧美国产日本在线| 日韩高清免费观看| 日韩电影免费在线观看| 亚洲成色www8888| 欧美三级免费观看|