1. 程式人生 > 其它 >資料結構與演算法-快速排序

資料結構與演算法-快速排序

技術標籤:java資料結構排序演算法演算法快速排序

快速排序是對氣泡排序的一種改進
首先是要對陣列進行分割槽,在基準數的左右兩邊分組。左邊的陣列<基準數,右邊的陣列>基準數。
可以把基準數比作是中軸線,區分開兩個分割槽。
注意:分割槽僅僅是將大於和小於基準數的元素分成兩組,並沒有進行排序。

    public static int  subZone(int[] arr,int right,int left){
        int pivot=arr[left];
        while(right>left){
        //如果左右分割槽為未區完畢
            while
(arr[right]>pivot&&right>left){ right--; } if(right>left){ arr[left]=arr[right]; left++; } while (arr[left]<pivot&&right>left){ left++; } if
(right>left){ arr[right]=arr[left]; right--; } } //返回基準數,後面使用遞迴時,分組要作為獨立的新的區繼續進行分割槽. arr[right]=pivot; return right; }

使用遞歸併且呼叫分割槽方法獲取基準數。利用基準數傳入開始和結束的下標。

private static void quickSort(int[] arr,int right,int left)
{ //結束條件 if(left<right){ int index=subZone(arr,right,left); quickSort(arr,index-1,left); quickSort(arr,right,index+1); } }
public class QuickSortDemo {
    public static void main(String[] args) {
        int[] arr={1,0,9,8,11,3,-1};
        System.out.println("排序前:");
        System.out.println(Arrays.toString(arr));
        quickSort(arr,arr.length-1,0);
        System.out.println("排序後:");
        System.out.println(Arrays.toString(arr));
    }

在這裡插入圖片描述