public class MyQuickSort { int[] data = new int[] { 10, 2, 5, 7, 3, 1, 20, 34, 4, 6, 30, 99, 23, 8, ...}; //反正吧,就99个数,不重复从1到99 public void Display() { Sort(data, 0, data.Length - 1); Console.WriteLine("快速排序结果为:"); for (int i = 0; i < data.Length; i++) Console.WriteLine(data[i]); } private void Sort(int[] a, int left, int right) { if (left < right) { int i = Partition(a, left, right); Sort(a, left, i - 1); Sort(a, i + 1, right); } } private int Partition(int[] a, int left, int right) { int tmp = a[left]; while (left < right) { while (left < right && a[right] >= tmp) right--;
public class MyQuickSort
{
int[] data = new int[] { 10, 2, 5, 7, 3, 1, 20, 34, 4, 6, 30, 99, 23, 8, ...};
//反正吧,就99个数,不重复从1到99
public void Display()
{
Sort(data, 0, data.Length - 1);
Console.WriteLine("快速排序结果为:");
for (int i = 0; i < data.Length; i++)
Console.WriteLine(data[i]);
} private void Sort(int[] a, int left, int right)
{
if (left < right)
{
int i = Partition(a, left, right);
Sort(a, left, i - 1);
Sort(a, i + 1, right);
}
} private int Partition(int[] a, int left, int right)
{ int tmp = a[left];
while (left < right)
{
while (left < right && a[right] >= tmp)
right--;
// 换位后不能将left+1,防止跳位
if(left<right)
a[left] = a[right]; while (left < right && a[left] <= tmp)
left++; if (left < right)
{
a[right] = a[left];
// 有left < right,可将right向前推一位
right--;
}
} a[left] = tmp; return left;
} }