//快速排序 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); } }