1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| class Solution { public: vector<int> sortArray(vector<int>& nums) { sort(nums, 0, nums.size() - 1); return nums; } private: int patition(vector<int>& nums, int i, int j) { int pivot = rand() % (j - i + 1) + i; int c = nums[pivot]; swap(nums[pivot], nums[i]); int lo = i, hi = j + 1; while(lo < hi) { while(lo < j && nums[++lo] < c) {} while(hi > i && nums[--hi] > c) {} if(lo >= hi) break; swap(nums[lo], nums[hi]); } swap(nums[hi], nums[i]); return hi; } void sort(vector<int>& nums, int i, int j) { if(i >= j) return; int m = patition(nums, i, j); sort(nums, i, m - 1); sort(nums, m + 1, j); } };
|