javascript - JavaScript quickSort 错误输出
问题描述
这是我写的快速排序算法:
var arr = [0, 2, 5, 10, 3, 22, 12, 8, 20];
let quickSort = (arr) => {
let len = arr.length;
if (len === 1) {
return arr;
};
let pivot = arr.length - 1;
const rightArr = [];
const leftArr = [];
for (let i = 0; i < len - 1; i++) {
let j = i + 1;
if (arr[j] > arr[pivot]) {
rightArr.push(arr[j]);
} else {
leftArr.push(arr[j]);
};
};
if (leftArr.length > 0 && rightArr.length > 0) {
return [...quickSort(leftArr), pivot, ...quickSort(rightArr)];
} else if (leftArr.length > 0 && rightArr.length <= 0) {
return [...quickSort(leftArr), pivot];
} else {
return [pivot, ...quickSort(rightArr)];
};
};
console.log(quickSort(arr));
输出是:[20, 1, 2, 3, 4, 5, 6, 8, 22]
我的问题是:为什么我会得到错误的输出,我该如何解决这个问题?
解决方案
这段代码有很多错误,但问题出在将pivo
t 添加到列表中而不是arr[pivot]
,pivot
作为索引
推荐阅读
- c# - 生命值条不会完全填满,计算只发生一次
- python - Flask JWT 扩展在验证 Google JWT 令牌时抛出异常
- jquery - 将旋转滑块添加到 octobercms 时未捕获的错误
- vba - 标记指定文件夹中的所有电子邮件已读
- python - 将所有图像从 Firebase 存储下载到 UICollectionView Swift
- sql - 将具有值的列转置为行
- javascript - Javascript r删除除空格外的任何非字母数字字符串
- python - Ansible 无法通过 pipenv 安装依赖项
- android - Flutter:带有数据的 iOS 向后滑动手势
- machine-learning - 如何将自训练的 word2vec 保存到 txt 文件,格式如“word2vec-google-news”或“glove.6b.50d”