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
|
/*** quick sort ***/
class Solution
{
public:
// 快速排序函数
void quick_sort(std::vector<int>& nums, int l, int r)
{
if (l >= r) // 递归终止条件
return;
int x = nums[l], i = l - 1, j = r + 1;
// 双指针划分
while (i < j)
{
do ++i; while (nums[i] < x); // 找到大于等于 x 的元素
do --j; while (nums[j] > x); // 找到小于等于 x 的元素
if (i < j)
std::swap(nums[i], nums[j]); // 交换不符合位置的元素
}
quick_sort(nums, l, j); // 递归处理左半部分
quick_sort(nums, j + 1, r); // 递归处理右半部分
}
vector<int> sortArray(vector<int>& nums)
{
quick_sort(nums, 0, nums.size() - 1);
return nums;
}
};
|