题目要求我们给数组升序排列,要求 nlogn 的时间复杂度以及不能使用内置排序方法
直接快排秒了
/**
* @param {number[]} nums
* @return {number[]}
*/
var sortArray = function(nums) {
return nums.quickSort();
};
Array.prototype.quickSort = function (left = 0, right = this.length - 1) {
if (left >= right) {
return this;
}
let i = left - 1;
let j = right + 1;
const pivot = this[Math.floor((i + j) / 2)];
while (i < j) {
while (this[++i] < pivot);
while (this[--j] > pivot);
if (i < j) {
[this[i], this[j]] = [this[j], this[i]];
}
}
this.quickSort(left, j);
this.quickSort(j + 1, right);
return this;
}