八大排序之快速排序

2021-10-08 03:02:18 字數 761 閱讀 1221

思想:定義陣列中的第乙個數為標誌量,再定義兩個指標,乙個指標從右向左開始遍歷陣列,直到找到乙個數比標誌量小;另乙個指標再從左向右遍歷陣列,直到找到乙個數比標誌量大。若找到,則交換這兩個數的位置,然後重複上述過程。直到兩個指標相遇時,交換此時指標指向的數的位置與標誌量的位置。此時,標誌量左邊的數均小於等於標誌量,標誌量右邊的數均大於等於標誌量。

上**

public

static

void

quicksort

(int[

] arr,int low, int high)

int i = low;

int j = high;

int temp = arr[low]

; int t;

while

(iwhile

(temp >= arr[i]

&& iif(i} arr[low]

= arr[i]

; arr[i]

= temp;

quicksort

(arr,low,j-1)

;quicksort

(arr,j+

1,high)

;}

注:為什麼要先讓指標j移動?

因為當快排時只取到兩個數時,如果這兩個數是有序的,且讓i指標先移動,就會使得i指標指向第二個數,然後結束while迴圈,並交換第乙個數和第二個數的位置。這樣就使得陣列反而是未排好序的狀態了。所以要讓j指標先移動。

八大排序之快速排序

快速排序 public class quicksort int arr 測試時間複雜度 o n 2 int arr new int 80000 for int i 0 i arr.length i long start time system.currenttimemillis quicksort ...

八大排序(三) 快速排序

快速排序的基本思想如下 設要排序的陣列是a 0 a n 1 首先任意選取乙個資料 通常選用陣列的第乙個數 作為關鍵資料,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一趟快速排序。值得注意的是,快速排序是一種不穩定的排序演算法,也就是說,多個相同的值的相對位置也許會在演算...

八大排序(五)快速排序

快速排序使用了分治策略。一 選定乙個基準數 一般選取第乙個數 然後把大於它的數都放在它右邊,把小於它的數放左邊。二 這樣就把陣列分成左右兩部分。再將左右兩部分分別遞迴執行第一步,最終當執行第一步的部分大小為一時,遞迴完成,原陣列排序完成。public class quicksort 將剛剛找到的數插...