var arr = new Array(1000);
for (var i = 0; i < 1000; i++) {
arr[i] = (Math.round(Math.random() * 1000));
}
// let arr = [0, 1, 0]
const quick = (arr) => {
if (arr.length <= 1) {
return arr;
} else {
let index = Math.floor(arr.length / 2);
let len = arr.splice(index, 1);
let left = [];
let right = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] < len) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quick(left).concat(len, quick(right));
}
}
console.log(quick(arr));
console.log(quick(arr).length);
输出结果是
为什么console.log(quick(arr).length)不是1000呢?
let len = arr.splice(index, 1);
这里使用了splice,是删除arr中的一个元素,元素的长度就从1000变成999了