namespace ConsoleQuickSort
{
public static class Quick
{
public static void Sort(int[] numbers)
{
Sort(numbers, 0, numbers.Length - 1);
} private static void Sort(int[] numbers, int left, int right)
{
if (left < right)
{
int middle = numbers[(left + right) / 2];
int i = left - 1;
int j = right + 1;
while (true)
{
while (numbers[++i] < middle) ;
//这个位置到底是什么意思?不做任何操作的循环吗?
//而且第一次运行时,这个++i到底怎么回事。
while (numbers[--j] > middle) ; if (i >= j)
break; Swap(numbers, i, j);
} Sort(numbers, left, i - 1);
Sort(numbers, j + 1, right);
}
} private static void Swap(int[] numbers, int i, int j)
{
int number = numbers[i];
numbers[i] = numbers[j];
numbers[j] = number;
}
}
}
{
public static class Quick
{
public static void Sort(int[] numbers)
{
Sort(numbers, 0, numbers.Length - 1);
} private static void Sort(int[] numbers, int left, int right)
{
if (left < right)
{
int middle = numbers[(left + right) / 2];
int i = left - 1;
int j = right + 1;
while (true)
{
while (numbers[++i] < middle) ;
//这个位置到底是什么意思?不做任何操作的循环吗?
//而且第一次运行时,这个++i到底怎么回事。
while (numbers[--j] > middle) ; if (i >= j)
break; Swap(numbers, i, j);
} Sort(numbers, left, i - 1);
Sort(numbers, j + 1, right);
}
} private static void Swap(int[] numbers, int i, int j)
{
int number = numbers[i];
numbers[i] = numbers[j];
numbers[j] = number;
}
}
}
一个是从后面向前面乔序.numbers[--j]