这是一段快速排序的代码,已经通过了题目。
void Quicksort(int *a, int l, int r)
{
if (l >= r) { return; }
int i = l, j = r, t = a[rand() % (r - l + 1) + l];
while (i <= j)
{
while (a[i] < t) { i++; }
while (a[j] > t) { j--; }
if (i <= j)
{
std::swap(a[i], a[j]);
i++, j--;
}
}
Quicksort(a, l, j);
Quicksort(a, i, r);
return;
}
但当我把这两行
while (a[i] < t) { i++; }
while (a[j] > t) { j--; }
改成这样后
while (a[i++] < t) { ; }
while (a[j--] > t) { ; }
答案就错误了。
请问什么原因导致的,百度无果。