javascript - JS 上的快速排序
问题描述
我正在读一本关于算法的书。作家使用 python 作为示例代码。下面是他在 python 上的快速排序
def quicksort(array):
if len(array) < 2:
# base case, arrays with 0 or 1 element are already "sorted"
return array
else:
# recursive case
pivot = array[0]
# sub-array of all the elements less than the pivot
less = [i for i in array[1:] if i <= pivot]
# sub-array of all the elements greater than the pivot
greater = [i for i in array[1:] if i > pivot]
return quicksort(less) + [pivot] + quicksort(greater)
print(quicksort([10, 5, 2, 3])) //returns [2, 3, 5, 10]
我试着写同样的,但在 JS 上。下面是我的功能。但它不能正常工作
function a (array){
if (array.length<2){
return array
}
else{
const pivot = array.shift()
less = array.filter(value => value <= pivot);
greater = array.filter(value => value > pivot);
let answer = a(less).concat((pivot), a(greater));
answer = answer.concat(a(greater));
return answer
}
}
console.log(a([[2, 3, 5, 10])) //returns [2, 3, 3, 5, 3, 3, 10, 3, 3]
我以为问题出在变量上,所以我更改了代码并返回正确
function a (array){
if (array.length<2){
return array
}
else{
const pivot = array.shift()
less = array.filter(value => value <= pivot);
let answer = a(less).concat(pivot);
greater = array.filter(value => value > pivot);
answer = answer.concat(a(greater));
return answer
}
}
console.log(a([[2, 3, 5, 10])) //returns [2, 3, 5, 10]
你能帮我在我的第一个例子中有什么问题吗?我也在 github 上查看了本书的 js 代码示例,但它与我的非常相似
解决方案
推荐阅读
- nestjs - Nestjs:无法读取“env”文件变量
- sql - 具有多个条件和表的 Linq To Sql Join
- python - 如何使用 PS4 控制器控制鼠标?
- javascript - TypeError:记分器不可迭代
- c# - LINQ 中的模式组合器
- .net - 通过 .net 核心 API 提取 Apache Kafka 数据
- javascript - 使用 apm 弹性搜索分析 VueJS 中的单个方法
- c++ - 使用 C++ Rest SDK 上传文件
- go - golang:无法从 go/parser 使用或下载 Parser
- python - 将相对路径解析为 Python 中的另一个相对路径