手动实现一种时间复杂度为 O(n log n) 的排序算法

Posted jun881821

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手动实现一种时间复杂度为 O(n log n) 的排序算法相关的知识,希望对你有一定的参考价值。

var quickSort = function (arr) {
if (arr.length <= 1) {
return arr;
}
var centerIndex = Math.floor(arr.length / 2); // 取中间基准
var center = arr.splice(centerIndex, 1)[0]; // 拿到基准数
var left = [];
var right = [];

for (var i = 0; i < arr.length; i++) {
if (arr[i] < center) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat([center], quickSort(right)); // 合并
};
// 测试
// var arr = [5, 7, 3, 16, 9, 4];
// console.log(quickSort(arr)); // [3, 4, 5, 7, 9, 16]
原文链接:https://blog.csdn.net/a5252145/java/article/details/105071655

以上是关于手动实现一种时间复杂度为 O(n log n) 的排序算法的主要内容,如果未能解决你的问题,请参考以下文章

为啥代码的时间复杂度为 O(log n)?

堆排序(Heapsort),优先队列可以用于O(N log N)

为啥即使 Eratothenes 筛子的时间复杂度为 O(nlog(log(n))),程序对于 n=100000 也不起作用

递归算法的时间复杂度分析

如何计算时间复杂度为 O(n log n) 的 XOR(二元)卷积

复杂度为 O(n log n) 的分治算法