归并排序

Posted sarah-wen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了归并排序相关的知识,希望对你有一定的参考价值。

function mergesort(arr) {
    var len= arr.length;
    if (len==1) {
        return arr;//返回的条件是数组大小为1
    }
    var midIndex = Math.floor(len/2);
    var mid = arr[midIndex];
    var left = arr.slice(0, midIndex);
    var right = arr.slice(midIndex, len);
    return merge(mergesort(left),mergesort(right));//数组都为1时,才开始进行归并
}
function merge(left, right) {//归并是一个从下到上的顺序
    var i =0;
    var j = 0;
    var result = [];
    while (i<left.length && j<right.length) {//这里利用数组result进行排序,从下往上依次是排好序的数组,然后一步一步合并成大数组。
        if(left[i]<right[j]) {
            result.push(left[i]);
            i++;
        }
        else {
        result.push(right[j]);
        j++;
        }
    }
    while (i<left.length) {//这里是把剩余项依此放到result中
        result.push(left[i]);
        i++;
    }
    while (j<right.length) {
        result.push(right[j]);
        j++;
    }
    return result;
}
var object = new mergesort([1,5,6,2,4,3]);
console.log(object);

 

以上是关于归并排序的主要内容,如果未能解决你的问题,请参考以下文章

python代码实现归并排序(Merge Sort )

排序之外部排序

Python代码实现归并排序

Python代码实现归并排序

算法排序02——归并排序介绍及其在分治算法思想上与快排的区别(含归并代码)

排序算法之归并排序