快排的C++实现
int partition(std::vector<int>& arr, int left, int right)
{
int num = arr.at(left);
while (left < right)
{
while (num >= arr.at(right) && (left < right))
{
right--;
}
while (num < arr.at(left) && (left < right))
{
left++;
}
if (left < right)
std::swap(arr.at(left), arr.at(right));
}
return left;
}
void qSort(std::vector<int> &arr, const int &left, const int &right)
{
if (left >= right)
return;
if (left < right)
{
int tL = left;
int tR = right;
int pos = partition(arr, left, right);
qSort(arr, tL, pos);
qSort(arr, pos + 1, tR);
}
}