- 排序数组
快排
class Solution {
public:
vector<int> sortArray(vector<int>& nums) {
srand((unsigned)time(NULL));
randmized_quickSort(nums, 0, nums.size() - 1);
return nums;
}
private:
void randmized_quickSort(vector<int>& nums, int left, int right) {
if (left < right) {
int pos = randmized_partition(nums, left, right);
randmized_quickSort(nums, left, pos - 1);
randmized_quickSort(nums, pos + 1, right);
}
}
int randmized_partition(vector<int>& nums, int left, int right) {
int i = rand() % (right - left + 1) + left;
swap(nums[i], nums[right]);
return partition(nums, left, right);
}
int partition(vector<int>& nums, int left, int right) {
int index = left - 1;
for (int i = left; i < right; ++i) {
if (nums[i] < nums[right]) {
swap(nums[i], nums[++index]);
}
}
swap(nums[++index], nums[right]);
return index;
}
};