递归快速排序,打印数组和数组长度的问题
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呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
let len = arr.splice(index, 1);
这里使用了splice,是删除arr中的一个元素,元素的长度就从1000变成999了