912.排序数组

排序数组

给你一个整数数组 nums,请你将该数组升序排列。

示例 1:

输入:nums = [5,2,3,1]
输出:[1,2,3,5]

示例 2:

输入:nums = [5,1,1,2,0,0]
输出:[0,0,1,1,2,5]

提示:

  • 1 <= nums.length <= $5 \times 10^4$
  • $-5 \times 10^4$ <= nums[i] <= $5 \times 10^4$

解析

使用快速排序(随机选择基准元素避免最坏情况)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var sortArray = function (nums) {
function quickSort(arr, left, right) {
if (left >= right) return;
const pivotIdx = left + Math.floor(Math.random() * (right - left + 1));
[arr[pivotIdx], arr[right]] = [arr[right], arr[pivotIdx]];
const pivot = arr[right];
let i = left;
for (let j = left; j < right; j++) {
if (arr[j] < pivot) {
[arr[i], arr[j]] = [arr[j], arr[i]];
i++;
}
}
[arr[i], arr[right]] = [arr[right], arr[i]];
quickSort(arr, left, i - 1);
quickSort(arr, i + 1, right);
}
quickSort(nums, 0, nums.length - 1);
return nums;
};

随机快排平均时间复杂度 O(n log n),空间复杂度 O(log n)。


912.排序数组
https://leetcode.lz5z.com/912.sort-an-array/
作者
tickli
发布于
2024年12月12日
许可协议