我使用维基百科算法,它根本不工作,我看不出我做错了什么,任何帮助将不胜感激!我很困惑,因为我认为lo值应该是0,但后来它说要做lo -1?
int partition(vector<int>v, int lo, int hi)
{
int pivot = v[lo]; //wikipedia says to use the low value
int i = lo - 1;
int j = hi + 1;
for (;;)
{
do
i = i + 1;
while (v[i] < pivot);
do
j = j - 1;
while (v[j] > pivot);
if (i <= j)
return j;
swap(i, j);
}
}
void quickSort(vector<int>v, int lo, int hi)
{
if (lo < hi)
{
int p = partition(v, lo, hi);
quickSort(v, lo, p);
quickSort(v, p + 1, hi);
}
}