class Program { static int[] a = new int[] { 6, 1, 2, 7, 9, 3, 4, 5, 10, 8 }; int n; static void Main(string[] args) { int i; int n = 9; quicksort(0, n); for (i = 0; i <= n; i++) Console.WriteLine(a[i]); } static void quicksort(int left, int right) { int i, j, t, temp; if (left > right) return; temp = a[left]; //temp中存的就是基准数 i = left; j = right; while (i != j) { //顺序很重要,要先从右边开始找 while (a[j] >= temp && i < j) j--; //再找右边的 while (a[i] <= temp && i < j) i++; //交换两个数在数组中的位置 if (i < j) { t = a[i]; a[i] = a[j]; a[j] = t; } } //最终将基准数归位 a[left] = a[i]; a[i] = temp; quicksort(left, i - 1);//继续处理左边的,这里是一个递归的过程 quicksort(i + 1, right);//继续处理右边的 ,这里是一个递归的过程 } }