老师,我觉得取中间的值步骤冗余了
来源:3-13 用 JS 实现快速排序并说明时间复杂度-代码演示和单元测试
慕尼黑7159308
2022-05-19
因为本来就是无序的,所以取哪个值效果都是一样的,直接取第0个就可以,还省去了splice(),循环的时候,直接从i=1去循环
function sortFn(arr) {
if (arr.length <= 1) return arr;
let firstVal = arr[0];
let arrLeft = [];
let arrRight = [];
for (let i = 1; i < arr.length; i++) {
let val = arr[i];
if (val > firstVal) {
arrRight.push(val);
} else {
arrLeft.push(val);
}
}
return [...sortFn(arrLeft), firstVal, ...sortFn(arrRight)]
}
写回答
2回答
-
Gladiator_wyj
2022-07-05
取第一个数为基准点存在一些问题
当数组有序或部分有序且足够大时,取第一个数为基准点时间复杂度会变为O(n^2)
012024-06-21 -
双越
2022-05-19
单元测试能通过即可。
00
相似问题