vector 快速排序
时间: 2023-09-23 19:10:07 浏览: 156
对于使用快速排序算法对向量(vector)进行排序,可以按照以下步骤进行操作:
1. 选择一个基准素(pivot)。通常情况下,可以选择向量的第一个元素作为基准。
2. 将向量划分为两部分,使得左边的元素都小于等于基准元素,右边的元素都大于等于基准元素。可以使用双指针法来实现划分操作。
3. 对左右两个子向量分别进行递归调用,重复上述步骤,直到子向量的长度为1或0,即已经完成排序。
下面是一个示例的快速排序的实现代码:
```cpp
void quickSort(vector<int>& nums, int left, int right) {
if (left >= right) {
return;
}
int pivotIndex = partition(nums, left, right);
quickSort(nums, left, pivotIndex - 1);
quickSort(nums, pivotIndex + 1, right);
}
int partition(vector<int>& nums, int left, int right) {
int pivot = nums[left];
int i = left + 1;
int j = right;
while (true) {
while (i <= j && nums[i] < pivot) {
i++;
}
while (i <= j && nums[j] > pivot) {
j--;
}
if (i >= j) {
break;
}
swap(nums[i], nums[j]);
}
swap(nums[left], nums[j]);
return j;
}
// 使用示例
vector<int> nums = {7, 2, 1, 6, 8, 5, 3, 4};
quickSort(nums, 0, nums.size() - 1);
```
这段代码将会对 nums 向量进行快速排序,最终得到的结果为 {1, 2, 3, 4, 5, 6, 7, 8}。注意,这里使用的是整型向量作为示例,你可以根据实际情况修改数据类型。
阅读全文