抱歉,我知道有很多关于快速排序的问题,但是其中有一个我找不到的错误。
public static void QuickSort(int[] sort)
{
QuickSort(sort, 0, sort.Length - 1);
}
private static void QuickSort(int[]sort, int first, int last)
{
int i = first;
int j = last;
int pivot = (i + j)/2;
int temp;
while(i <= j)
{
while(sort[i] < sort[pivot]){i++;}
while(sort[j] > sort[pivot]){j--;}
if(i <= j)
{
temp = sort[i];
sort[i] = sort[j];
sort[j] = temp;
i++;
j--;
}
}
if(first < j)QuickSort(sort, first, j);
if(last > i)QuickSort(sort, i, last);
}
看起来不错,但对这个数组进行排序
int[] sortMe = {2,5,6,4,8,9,6,3,21,2,5,4,8,9,6,5,46,6,3};
像这样:
2,2,3,4,3,4,5,5,6,6,5,6,6,8,8,9,9,21,46
而不是明显的正确顺序。