码迷,mamicode.com
首页 > 编程语言 > 详细

归并排序

时间:2019-04-20 12:40:49      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:obj   code   合并   ice   开始   OLE   归并排序   排序   利用   

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

 

归并排序

标签:obj   code   合并   ice   开始   OLE   归并排序   排序   利用   

原文地址:https://www.cnblogs.com/sarah-wen/p/10740437.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!