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