Javascript 在Js中快速排序中使用for循环
我正在编写快速排序算法,当我测试代码时,结果让我感到困惑 RangeError:超过最大调用堆栈大小 at Array.push()Javascript 在Js中快速排序中使用for循环,javascript,quicksort,Javascript,Quicksort,我正在编写快速排序算法,当我测试代码时,结果让我感到困惑 RangeError:超过最大调用堆栈大小 at Array.push() 设arr=[0,-1,1,0,1,-1100,23,17,56,39,47,23,-34,-56] export default function quickSort(array){ let len = array.length; if(len <= 1) return array; let piviot = array.pop()
设arr=[0,-1,1,0,1,-1100,23,17,56,39,47,23,-34,-56]代码>
export default function quickSort(array){
let len = array.length;
if(len <= 1) return array;
let piviot = array.pop();
let left = [], right = [];
for (let i = 0; i < len; i++) {
if(array[i] < piviot){
left.push(array[i]);
}
else{
right.push(array[i])
}
}
return quickSort(left).concat(piviot,quickSort(right));
}
导出默认函数快速排序(数组){
设len=array.length;
如果(len这将作为piviot=array.pop();
更改导致问题的数组大小而工作
export default function quickSort(array){
let len = array.length;
if(len <= 1) return array;
let piviot = array.pop();
len = array.length;
let left = [], right = [];
for (let i = 0; i < len; i++) {
if(array[i] < piviot){
left.push(array[i]);
}
else{
right.push(array[i])
}
}
return quickSort(left).concat(piviot,quickSort(right));
}
导出默认函数快速排序(数组){
设len=array.length;
如果(len我不会为您编写快速排序算法,但我会解释其行为:
为什么第一段代码溢出堆栈
这在永不结束的递归函数中非常常见。你永远不会达到神奇的程度
if(len <= 1) return array;
if(len)在高度引用的语言(如javascript)上实现基本算法将被证明是有问题的……这是简短的答案
if(len <= 1) return array;