这是我写的算法
var arr = [0,2,5,10,3,22,12,8,20];
let quickSort = (arr) => {
if(arr.length === 1){
return arr;
};
let len = arr.length;
let pivot = Math.floor(arr.length / 2);
const Rightarr = [];
const Leftarr = [];
for(let i = 0; i < len ; i++){
if (arr[i] < pivot){
Leftarr.push(arr[i]);
}else{
Rightarr.push(arr[i]);
};
};
if(Leftarr.length > 0 && Rightarr > 0){
console.log(...quickSort(Leftarr) , pivot , ...quickSort(Rightarr));
}else if (Leftarr.length > 0 ){
console.log(...quickSort(Leftarr),pivot);
}else{
console.log(pivot,...quickSort(Rightarr));
};
console.log(arr);
};
quickSort(arr);当我运行这段代码时,我在console main.js:26 Uncaught TypeError: quickSort是不可迭代的(不能读取属性符号(Symbol.iterator))在quickSort (main.js:26)在main.js:33上看到的。
我的问题是为什么我会收到这个警告,以及如何修正它。
发布于 2021-07-24 17:46:32
您的快速排序函数不会像@Ivar所指出的那样返回任何内容。
此外,代码中也有错误。
if(Leftarr.length > 0 && Rightarr > 0)看起来应该是
if(Leftarr.length > 0 && Rightarr.length > 0)https://stackoverflow.com/questions/68512341
复制相似问题