我一直在研究如何在C#中爲大學做快速排序。我幾乎可以工作。只有幾個數字沒有按正確的順序出現。 array:1,5,8,6,7,3,2,4,9 「sorted」into:1,5,4,6,2,3,7,8,9 instead of 1,2, 3,4,5,6,7,8,9。 不知道在哪裏,我在我的代碼會錯:與快速排序算法混淆C#
int[] array4 = { 1, 5, 8, 6, 7, 3, 2, 4, 9};
QuickSort quick = new QuickSort();
quick.Quicksort(array4, 0, array4.Length - 1);
public void Quicksort(int[] array, int left, int right)
{
int pivot, temp;
pivot = array[(left + right/2)];
do
{
while ((array[left] < pivot) && (left < right))
left++;
while ((pivot < array[right]) && (right > left))
right--;
if (left <= right)
{
temp = array[left];
array[left] = array[right];
array[right] = temp;
left++;
right--;
}
}
while (left <= right);
if (left < right) Quicksort(array, left, right);
}
}
感謝
通常,當發生這種情況時,您不會在數組中的所有值中逗留。嘗試更改輸入數據並將'1'移動到列表的末尾。 – jdweng
您需要進行兩個遞歸調用,一個用於左側分區,另一個用於右側。 – Lee