Java快速排序算法

//快速排序
    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);
        }
    }
相关文章
相关标签/搜索