今天看《数据结构》(C#版)的时候,看了一个他的快速排序,但是实际遍了一下总是有问题。最后终于发现了是哪里出了问题。代码如下:
private static void quicksort(ref List<int> sqList3, int low, int high) //OK了!!!~~~:)
{
int i = low;
int j = high;
int tem = sqList3[low];
while (low < high)
{
while ((low < high) && (sqList3[high] >= tem))
{
high--;
}
if (low == high) break; //这句话是我加的
sqList3[low] = sqList3[high];
low++;
while ((low < high) && (sqList3[low] <= tem))
{
low++;
}
if (low == high) break; //这句话是我加的
sqList3[high] = sqList3[low];
high--;
}
sqList3[low] = tem;
if (i < low - 1)
quicksort(ref sqList3, i, low - 1);
if (low + 1 < j)
quicksort(ref sqList3, low + 1, j);
}