由於某種原因,我的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