我一直在研究如何在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