快速排序java實現

1.QuickSortMain

package cn.xiaobo.QuickSort;html

/**
 * 快速排序的思想:選準一個基準點;通常拿數組的第一個元素做爲基準點;
 * 而後選取兩個指針;i=left;j=right;兩邊進行;小於基準點的放在左邊;大於放在右邊;
 * 最後i=j;將基準點的值給arr[i];
 * 再如下標i爲界限依次進行遞歸;不要忘記跳出遞歸的條件是i=j;
 * 參考博客:https://www.cnblogs.com/foreverking/articles/2234225.html
 * 他的源程序我作了點改動;
 * @author Administrator
 *
 */
public class QuickSortMain {
    public static void main(String[] args) {
        int[] arr=new int[10];
//    for(int i=0;i<10;i++){
//        arr[i]=10-i;
//    };
    arr[3]=67;
    arr[4]=76;
    arr[5]=99;
    arr[6]=64;
    arr[1]=2;
    arr[0]=1;
    arr[2]=6;
        QuickSortApp quickSortApp=new QuickSortApp();
        System.out.print("排序前:");
        for(int i=0;i<10;i++){
            System.out.print(arr[i]+"  ");
        };
    
        quickSortApp.Sort(arr, 0, 9);
        
        System.out.print("排序後:");
        for(int i=0;i<10;i++){
            System.out.print(arr[i]+"  ");
        };
    }
數組

}ui

2.QuickSortApp

package cn.xiaobo.QuickSort;spa

public class QuickSortApp {.net

    public void Sort(int[] arr,int _left,int _right) {
        int left=_left;
        int right=_right;
        
        //遞歸的臨界點是左邊邊界等於右邊邊界;
        if(left<right){
        //最後的結果必定是左邊的下標等於右邊的下標
            
            //選取基準點
            int temp=arr[left];
        while(left!=right){
            
            //先從right開始搜索,當搜索到比temp小時,跳出循環
            
            while(left<right&&arr[right]>temp){
                right--;
            }
            //arr[left]的值給了temp,因此先把arr[right]給arr[left]
            //多出一個空位
            if(right>left){
                arr[left]=arr[right];
            }
            //循環中找到比temp大的值;
            while(left<right&&arr[left]<=temp){
                left++;
            }
            //左邊搜索到了比temp大的值,放在右邊空缺的位置
            if(right>left){
                arr[right]=arr[left];
            }
        }
        //把基準值給最後一個;
        arr[left]=temp;
        //再對兩邊進行遞歸,因爲arr[i]已是排好序的,因此不用加入;
        Sort(arr,_left,left-1);
        Sort(arr,right+1,_right);
        }
    }
        
}
指針

3.參考博客

        https://www.cnblogs.com/foreverking/articles/2234225.html

相關文章
相關標籤/搜索