int partition(vector<int>& vec, int lo, int hi)
{
int pivot = vec[lo];
int i = lo, j = lo;
while (i <= hi)
{
if (vec[i] < pivot) //使得区间[lo+1, j]小于pivot, [j+1, i]区间大于pivot,直到i == hi结束
{
j++;
std::swap(vec[i], vec[j]);
}
i++;
}
swap(vec[lo], vec[j]); //交换pivot
return j;
}
void quick_sort(vector<int>& vec, int lo, int hi)
{
if (lo > hi) return;
int mid = partition(vec, lo, hi);
quick_sort(vec, lo, mid-1);
quick_sort(vec, mid + 1, hi);
}
快排
最新推荐文章于 2024-02-12 18:09:13 发布
本文深入介绍了快速排序算法的实现细节,包括分区函数的运作原理及其在排序过程中的关键作用。通过对核心函数partition的理解,读者可以掌握如何通过交换元素将数组分为两部分,使得一部分的所有元素都小于另一部分的所有元素。
991

被折叠的 条评论
为什么被折叠?



