C++实现快速排序
时间: 2023-07-04 16:29:15 浏览: 107
快速排序是一种常用的排序算法,其时间复杂度为O(nlogn)。下面是C++实现快速排序的代码示例:
```c++
void quickSort(vector<int>& nums, int left, int right) {
if (left >= right) {
return;
}
int pivot = nums[left];
int i = left;
int j = right;
while (i < j) {
while (i < j && nums[j] >= pivot) {
j--;
}
nums[i] = nums[j];
while (i < j && nums[i] <= pivot) {
i++;
}
nums[j] = nums[i];
}
nums[i] = pivot;
quickSort(nums, left, i - 1);
quickSort(nums, i + 1, right);
}
```
上述代码中,我们使用了快速排序的经典算法思想,即通过选取一个基准值(pivot),将所有小于等于基准值的元素放在基准值左边,将所有大于基准值的元素放在基准值右边。具体实现中,我们使用两个指针(i和j)分别从左右两端向中间遍历,一旦发现需要交换的元素,就进行交换。最后,我们将基准值放到正确的位置上,并对基准值左边和右边的子数组进行递归排序。
阅读全文