美文网首页
分解javascript归并排序

分解javascript归并排序

作者: Searchen | 来源:发表于2018-05-30 12:48 被阅读7次

掌握算法,先理解原理

采用分而治之的策略
拆分 --> 取值 --> 合并

把长度为n的输入序列分成两个长度为n/2的子序列;
对这两个子序列分别采用归并排序;
将两个排序好的子序列合并成一个最终的排序序列。

归并排序.jpg
function mergeSort(arr) {  // 采用自上而下的递归方法
    var len = arr.length;
    if (len === 1) {
        return arr;
    }
    var middle = Math.floor(len / 2), //去中间点
        left = arr.slice(0, middle),  // 左数组
        right = arr.slice(middle); // 右数组
    return merge(mergeSort(left), mergeSort(right));
}

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);

}
var array = [11, 43, 24, 76, 89, 43, 65]

console.log(mergeSort(array))

参考文章:
归并排序

相关文章

  • 分解javascript归并排序

    掌握算法,先理解原理 采用分而治之的策略拆分 --> 取值 --> 合并 把长度为n的输入序列分成两个长度为n/2...

  • 归并排序

    归并排序 归并排序是采用分治法的一个非常典型的应用。归并排序的思想就是先递归分解数组,再合并数组。 将数组分解最小...

  • 排序与搜索: 归并排序

    归并排序 归并排序是采用分治法的一个非常典型的应用。归并排序的思想就是先递归分解数组,再合并数组。 将数组分解最小...

  • 归并排序(MergeSort)——算法导论

    一、归并排序 归并排序算法完全遵循分治模式。直观上其操作如下: (1)分解:分解等排序的n个元素的序列成各具n/2...

  • 数据结构与算法之美-归并排序

    Merge Sort - 归并排序 核心:归并排序是采用分治法的一个非常典型的应用。 归并排序的思想就是先递归分解...

  • 快速排序

    快速排序和归并排序类似,都用到了分治的思想。 分解 ----> 解决 ----> 合并 分解:将数组 A[p......

  • python实现归并排序 -- 详细思路分析

    1. 归并排序思想 是建立在归并操作上的一种有效的排序算法。先将数组分解成多个元素,然后对分解后的元素进行排序和合...

  • 归并排序

    归并排序是采用分治法的一个非常典型的应用。归并排序的思想就是先递归分解数组,再合并数组。 将数组分解最小之后,然后...

  • 【排序算法】6.归并排序

    归并排序是采用分治法的一个非常典型的应用。归并排序的思想就是先递归分解数组,再合并数组。将数组分解最小之后,然后合...

  • python 实现各种排序算法

    总结了一下常见集中排序的算法。 归并排序 归并排序也称合并排序,是分治法的典型应用。分治思想是将每个问题分解成个个...

网友评论

      本文标题:分解javascript归并排序

      本文链接:https://www.haomeiwen.com/subject/gismjftx.html