#include<iostream>
#include<vector>
int partition(int left, int right, std::vector<int>& v);
void quickSort(int lo, int hi, std::vector<int>& v)
{
if (hi - lo < 2) return;
int mi = partition(lo, hi - 1, v);
quickSort(lo, mi, v);
quickSort(mi + 1, hi, v);
}
int partition(int lo, int hi, std::vector<int>& v)
{
std::swap(v[lo], v[lo + rand() % (hi - lo + 1)]);
int pivot = v[lo];
while (lo < hi)
{
while (lo < hi && pivot <= v[hi])
--hi;
v[lo] = v[hi];
while (lo < hi && v[lo] <= pivot)
++lo;
v[hi] = v[lo];
}
v[lo] = pivot;
return lo;
}
int main()
{
std::vector<int> v{3, 1, 2, 322 ,23,4, 6, 7, 5};
for (const auto& i : v)
std::cout << i << ' ';
std::cout << std::endl;
quickSort(0, v.size(), v);
for (const auto& i : v)
std::cout << i << ' ';
std::cout << std::endl;
system("pause");
return 0;
}
手撕快速排序
最新推荐文章于 2024-10-09 22:28:58 发布
本文详细介绍了如何使用C++实现快速排序算法,包括partition函数的工作原理和整个quickSort函数的递归调用过程。代码示例展示了如何对整数向量进行排序。
摘要由CSDN通过智能技术生成