912. 排序数组(快排实现) 题目 排序数组 方法思路 快排随机定义标志 代码 class Solution { public: void swap(vector<int>& nums, int i, int j) { int t = nums[i]; nums[i] = nums[j]; nums[j] = t; } void randF(vector<int>& nums, int l, int r) { int n = r - l + 1; int index = rand() % n + l; swap(nums, l, index); } void qSort(vector<int>& nums, int l, int r) { if (l >= r) return; // 随机定义标志 randF(nums, l, r); int i = l; int j = r; int temp = nums[l]; while (i < j) { // 从后往前找到第一个小于标志的数,交换 while (i < j && nums[j] >= temp) j--; swap(nums, j, i); // 从前往后找到第一个不大于标志的数,交换 while (i < j && nums[i] < temp) i++; swap(nums, i, j); } nums[i] = temp; qSort(nums, l, i - 1); qSort(nums, i + 1, r); } vector<int> sortArray(vector<int>& nums) { srand(time(NULL)); qSort(nums, 0, nums.size() - 1); return nums; } };