
快排

class Solution {
public:
vector<int> sortArray(vector<int>& nums) {
srand(time(0));
int n = nums.size();
Quicksort(nums, 0, n-1);
return nums;
}
void Quicksort(vector<int> &nums, int l, int r) {
if (l < r) {
int pos = RandomPartition(nums, l, r);
Quicksort(nums, l, pos - 1);
Quicksort(nums, pos + 1, r);
}
}
int RandomPartition(vector<int> &nums, int l, int r) {
int i = rand() % (r - l + 1) + l;
swap(nums[i], nums[r]);
int pos = partition(nums, l, r);
return pos;
}
int partition(vector<int> &nums, int l, int r) {
int i = l - 1;
for (int j = l; j <= r - 1; j++) {
if (nums[j] <= nums[r]) {
i++;
swap(nums[j], nums[i]);
}
}
swap(nums[i+1], nums[r]);
return i + 1;
}
};