leetcode 912. 排序数组
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 <= 50000
-50000 <= nums[i] <= 50000
方法: 随机主元的快排
class Solution { public: void quicksort(vector<int>& nums, int l, int r){ if(l>=r) return; int t = rand() % (r - l + 1) + l; // 随机选一个作为我们的主元 swap(nums[l], nums[t]); int pivot = nums[l], i = l, j = r; while(i<j){ while(i<j && nums[j] >= pivot){j--;} while(i<j && nums[i] <= pivot){i++;} swap(nums[i], nums[j]); } swap(nums[l], nums[i]); quicksort(nums, l, i-1); quicksort(nums, i+1, r); return; } vector<int> sortArray(vector<int>& nums) { int n = nums.size(); quicksort(nums, 0, n-1); return nums; } };