快速排序

源代碼

import java.util.Scanner;

/**
 *
 * @author liuzhenzhao
 */
public class MyQuickSort {

    /**
     * @param args the command line arguments
     */
    public static void QuickSort(int []A,int p,int r)
    {
        if(p<r)
        {
            //分治
            int q=Partition(A,p,r);
            QuickSort(A,p,q-1);
            QuickSort(A,q+1,r);
        }

    }
    public static int Partition(int []A,int p,int r)
    {
    /*每次均選擇A[]的最右端元素爲主元*/
        int x=A[r];//選擇主元
        int i=p-1;
        for(int j=p;j<=r-1;j++)
        {
            if(A[j]<=x)
            {
                //A[p...i]<A[r]
                i++;
                //exchange A[j] with A[i]
                int temp=A[j];
                A[j]=A[i];
                A[i]=temp;
            }
            //當A[j]>x時進入下一輪循環,j++
        }
        //exchange A[r] with A[i+1]
        int temp=A[i+1];
        A[i+1]=A[r];
        A[r]=temp;
        return i+1;
    }
    public static void main(String[] args) {
    //main方法裏爲測試程序
        // TODO code application logic here
        Scanner in=new Scanner(System.in);
        int len=0;
        if(in.hasNextInt())
        {
            len=in.nextInt();
        }
        int []array=new int[len];
        for(int i=0;i<len;i++)
        {
            if(in.hasNextInt())
                array[i]=in.nextInt();
        }
        QuickSort(array,0,len-1);
        System.out.println("after quicksort:");
        for(int i=0;i<len;i++)
        {
            System.out.print(array[i]+" ");
        }
        System.out.println("");
    }

}

運行結果:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章