public void QuickSort(int[] arr, int left, int right) //快速排序 { //先從數列中去處一個數作為基准數 //分區過程,將比這個數大的數全放在他的右邊,小於或者等於放在左邊 //在對左右區間重復第二部 if (left < right) { int x = arr[left]; //基准數,把比她小或者等於他的放在他的左邊,然后把比他大的放在右邊 int i = left; int j = right; //用來循環 的標志位 while (i < j) { while (i < j) { if (arr[j] <= x) { arr[i] = arr[j]; break; } else { j--; //向左移動到下一個數字 } } //從前往后(從左向右)找到一個比x大的數字 while ( i < j) { if (arr[i] > x) { arr[j] = arr[i]; break; } else { i++; } } } arr[i] = x; QuickSort(arr, left, i - 1); //使用回調 QuickSort(arr, i + 1, right); } }