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

归并排序

时间:2018-07-11 12:32:10      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:lse   java   script   var   style   归并   font   类型   ons   

 

/*
算法描述
1.把arr分成left,right子序列;
2.比较left,right大小,返回排完序数组,递归两次;
3.递归与栈相关,弹出并返回的值执行其他动作。
*/

 

 

 

function mergeSort(arr) {                                  //参数类型:数组;返回:数组。
        if (arr.length < 2) {
            return arr;
        }

        const middle = Math.floor(arr.length / 2);         //中间值
        const left = arr.slice(0,middle);                  //left[]
        const right = arr.slice(middle);                   //right[]  
        return merge(mergeSort(left),mergeSort(right));    //递归两次
    }

    function merge(left,right) {
        var newArr = [];
        while (left.length && right.length) {              
            if (left[0] < right[0]) {                       //子序列比较大小
                newArr.push(left.shift());
            } else {
                newArr.push(right.shift());
            }
        }
        return newArr.concat(left,right);                    //返回合并好的了子序列
    }

    alert(mergeSort([54,24,15,95,75,35,68,78,12,31,108]));   //12,15,24,31,35,54,68,75,78,95,108

 

  

 

归并排序

标签:lse   java   script   var   style   归并   font   类型   ons   

原文地址:https://www.cnblogs.com/Longhua-0/p/9293341.html

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