簡體   English   中英

合並排序實現在Java中不起作用

[英]Merge Sort Implementation Not Working in Javascript

我正在嘗試學習有關排序算法的更多信息。 這是我的合並排序實現。 我的算法有什么問題嗎? 相信我錯過了一些東西。

 var arr = [1,5,3,2,4,78,3,2]; alert(mergeSort(arr)); function mergeSort(arr){ var len = arr.length; var mid = Math.floor(len/2); var left = arr.slice(0,mid); var right = arr.slice(mid); if(len < 2) return arr; return merge(mergeSort(left),mergeSort(right)); } function merge(left, right){ var res = []; var lLeft = left.length; var lRight = right.length; var l = 0; var r = 0; while(l < lLeft && r < lRight){ if(left[l] < right[r]){ res.push(left[l++]); }else{ res.push(right[r++]); } } return res; } 

function mergeSort (arr) {    
    if (arr.length < 2) return arr;

    var mid = Math.floor(arr.length /2);
    var subLeft = mergeSort(arr.slice(0,mid));
    var subRight = mergeSort(arr.slice(mid));

    return merge(subLeft, subRight);
}

function merge (a,b) {
    var result = [];
    while (a.length >0 && b.length >0)
        result.push(a[0] < b[0]? a.shift() : b.shift());
    return result.concat(a.length? a : b);
}

var test = [1,5,3,2,4,78,3,2];
console.log(mergeSort(test));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM