1 回答

TA貢獻(xiàn)1906條經(jīng)驗 獲得超10個贊
死循環(huán),堆棧溢出了。right數(shù)組有兩項,9,8.遞歸執(zhí)行的時候始終是9,8.
因為此時mid是8,ara[i]始終>=mid,right數(shù)組始終是9,8.就死循環(huán)了。
正確寫法如下:
function quickSort(arr){
var len;
len=arr.length;
if (len <= 1) {
return arr; //如果數(shù)組只有一個數(shù),就直接返回;
}
var midlen = Math.floor(len/2);
// var mid = arr[midlen];
var mid = arr.splice(midlen,1)[0];
// console.log(mid);
var left = [];
var right = [];
for (var i = 0,len=arr.length; i < len; i++) {
if (arr[i] <= mid) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
// console.log(left.concat([mid],right));
return quickSort(left).concat([mid], quickSort(right));
}
//test
console.log(quickSort([9, 2, 8, 5, 1]));
//輸出:[ 1, 2, 5, 8, 9 ]
添加回答
舉報