JavaScript 快速排序错误
JavaScript quickSort errore
这是我写的算法
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);
当我 运行 这段代码时,我在控制台中看到了这个
main.js:26 Uncaught TypeError: quickSort is not iterable (cannot read 属性 Symbol(Symbol.iterator))
在快速排序 (main.js:26)
在 main.js:33
我的问题是为什么我会收到此警告,以及如何修复它
您的快速排序函数没有return @Ivar 指出的任何内容。
另外,你的代码有错误
if(Leftarr.length > 0 && Rightarr > 0)
看起来应该是
if(Leftarr.length > 0 && Rightarr.length > 0)
这是我写的算法
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);
当我 运行 这段代码时,我在控制台中看到了这个 main.js:26 Uncaught TypeError: quickSort is not iterable (cannot read 属性 Symbol(Symbol.iterator)) 在快速排序 (main.js:26) 在 main.js:33
我的问题是为什么我会收到此警告,以及如何修复它
您的快速排序函数没有return @Ivar 指出的任何内容。
另外,你的代码有错误
if(Leftarr.length > 0 && Rightarr > 0)
看起来应该是
if(Leftarr.length > 0 && Rightarr.length > 0)