//快速排序 public static void fast_sort(int a[], int startIndex, int endIndex) { int midOne = a[startIndex];//選第一個做爲參考點 int i = startIndex, j = endIndex; if(i < j)//這個判斷是遞歸結束的依據,不加的話會致使堆棧溢出 { while(i < j) { for(; i < j; j--){ if(a[j] < midOne)//小於參考點的數移到左邊 { a[i++] = a[j]; break; } } for(; i < j; i++){ if(a[i] > midOne)//大於參考點的數移到右邊 { a[j--] = a[i]; break; } } } a[i] = midOne;//參考點歸位 //把參考點左右的部分分別進行快排 fast_sort(a, startIndex, i - 1); fast_sort(a, i + 1, endIndex); } }