JavaScript - 排序算法 - 歸并排序

特點:

  • 時間復雜度:O(nlog2n)
  • 歸并排序是穩定的排序算法

原理:(分治法)

  • 原理類似于合并兩條有序鏈表
  • 分割為多條小的有序隊列,通過兩兩合并最終實現完整序列

代碼實現:(遞歸)

// 采用自上而下的遞歸方法
function mergeSort(arr) {  
    const len = arr.length;
    if (len < 2) return arr;
    const middle = Math.floor(len >> 1);
    const left = arr.slice(0, middle);
    const right = arr.slice(middle);

    return merge(mergeSort(left), mergeSort(right));
}
function merge(left, right) {
    let result = [];

    while (left.length && right.length) {
        if (left[0] <= right[0]) {
            result.push(left.shift());
        } else {
            result.push(right.shift());
        }
    }
    while (left.length) {
        result.push(left.shift());
    }
    while (right.length) {
        result.push(right.shift());
    }
    return result;
}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。