由于某种原因,我的while循环(i < = j)不会在j比i更低时结束。C#while循环不退出(quicksort)
我观察了调试值,并且已经多次看到(4,3),(6,5)等的i和j(分别)的值。
public static List<Item> QuickSort(List<Item> a, int left, int right)
{
int i = left;
int j = right;
double pivotValue = ((left + right)/2);
Item x = a[Convert.ToInt32(pivotValue)];
Item w;
while (i <= j)
{
//these while loops continue looping after i<=j is false
while (a[i] < x)
{
i++;
}
while (x < a[j])
{
j--;
}
if (i <= j)
{
w = a[i];
a[i++] = a[j];
a[j--] = w;
}
}
if (left < j)
{
QuickSort(a, left, j);
}
if (i < right)
{
QuickSort(a, i, right);
}
return a;
}
这是一个遗憾...... – JustAndrei
我不相信'while while'坏了。继续调试。也许这是递归? – Benesh
它永远不会去递归。这发生在第一遍。 – user3470510