快速排序Quick_Sort

快排:排序中的明星算法,也几乎是必须掌握的算法,这次我们来领略以下快排为何魅力如此之大。

代码:

    static void quick(int []a, int i, int j)
    {
        int k = i;
        int m = i;
        int l = j;
        int pivot = a[i];

        while (j > i)
        {
            while (a[j] > pivot && j != i) {
                j--;
            }
            if (i != j)
                a[i] = a[j];
            else {
                a[j] = pivot;
                k = j;
                break;
            }
            while(a[i] < pivot && j != i)
                i++;

            if (i != j)
                a[j] = a[i];
            else {
                a[i] = pivot;
                k = i;
            }

        }

        if(k >m && k < l) {
            quick(a, m, k - 1);
            quick(a, k + 1, l);
        }

    }

    public static void main(String []args)
    {
//        int [] a = {6,4,8,9,3,1,2,7};
        int [] a = {49,38,65,97,76,13,27};
        quick(a,0,a.length - 1);

        for (int i :a)
            System.out.print(i);
}

猜你喜欢

转载自www.cnblogs.com/lbrs/p/11902116.html