簡單的快排算法(Java)實現


  這里主要是為了給自己記錄一下實現快排的基本流程和思路。

package SortTest;

public class QuickSort {
    /**
     * 遞歸
     * 以獲取的游標為分界,繼續往下分
     * @param array
     * @param low
     * @param high
     */
    public static void Sort(int[] array,int low,int high) {
        if(low<high) {
            int piovt=getPiovt(array,low,high);
            Sort(array,low,piovt-1);
            Sort(array,piovt+1,high);
        }
    }
    /**
     * 獲得游標
     * @param array
     * @param low
     * @param high
     * @return
     */
    private static int getPiovt(int[] array,int low,int high) {
        int piovt=array[low];
        while(low<high) {
            while(low<high&&piovt<=array[high]) {
                high--;
            }
            swap(array,low,high);
            while(low<high&&piovt>=array[low]) {
                low++;
            }
            swap(array,low,high);
        }
        return low;
    }
    /**
     * 交換
     * @param array
     * @param i
     * @param j
     */
    private static void swap(int[] array,int i,int j) {
        int temp=array[i];
        array[i]=array[j];
        array[j]=temp;
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int array[]= {31,78,29,10,10,96,65,12,46};
        Sort(array,0,array.length-1);
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i]+" ");
        }
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM