V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mara1
V2EX  ›  程序员

大佬们,我这算非递归归并排序吗?

  •  
  •   mara1 · 2019-07-13 11:59:47 +08:00 · 1604 次点击
    这是一个创建于 1958 天前的主题,其中的信息可能已经有所发展或是发生改变。
    function mergeSort(array){
        if(array.length==1){
            return array;
        }
        for(let len = 2;len/2<=array.length;len*=2){
            for(let start=0;start<array.length;start+=len){
                sort(start,len,array)
            }
        }
        return array;
    }
    function sort(start,len,arr){
        let middle = start+ len/2;
        let left = arr.slice(start,middle);
        let right = arr.slice(middle,start+len);
        let res = [];
        while(left.length>0 && right.length>0){
            if(left[0]<right[0]){
                res.push(left[0])
                left.shift();
            }else{
                res.push(right[0]);
                right.shift();
            }
        }
        let replace = res.concat(left).concat(right);
        arr.splice(start,len,...replace);
    }
    let a = [3,1,0,9,8,11,12,6,4,7]
    
    var result = mergeSort(a);
    console.log("arr:",result);
    
    3 条回复    2019-07-13 23:21:40 +08:00
    guyeu
        1
    guyeu  
       2019-07-13 14:27:24 +08:00
    算。
    doing1
        2
    doing1  
       2019-07-13 14:29:16 +08:00
    是的
    singleQ
        3
    singleQ  
       2019-07-13 23:21:40 +08:00
    这个是快牌
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1489 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:58 · PVG 07:58 · LAX 15:58 · JFK 18:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.