演算法基礎 快速排序

2021-10-02 09:14:48 字數 1055 閱讀 4217

分治法

選擇分界點(arr[l]、arr[mid]、arr[r])

調整陣列區間(左半部分 < 分界點,右半部分 > 分界點)

遞迴處理左半部分,遞迴處理右半部分

;//3. 遞迴處理

quicksort

(arr, j+

1, r);}

intmain()

**的驗證

1.第k小的數

題目鏈結

#include

#include

using namespace std;

const

int n =

1e6+10;

int arr[n]

;int n, k;

//返回第 k-1 位置處的數

intquicksort

(int

*arr,

int l,

int r)

if(k-

1<= j)

return

quicksort

(arr, l, j)

;else

return

quicksort

(arr, j+

1, r);}

intmain()

基礎排序演算法 快速排序

快速排序大家應該都知道,快速排序是一種不穩定的演算法,運氣差可以降速降到冒泡的速度,運氣好能快到比歸併還快的速度。首先,快速排序需要選擇乙個x,這個數很多人稱為基準。剛開始的時候選擇 a 0 當x,讓i l,j r 剛開始的時候l和r分別為最左邊和最右邊。1 讓j減小,直到遇到 i 或者找到乙個小於...

演算法基礎 快速排序

要求 10分鐘內寫出快排!之前筆試用到排序演算法,總是想用快排但是又不能在規定時間寫出來,歸根到底還是快排的邏輯步驟沒有搞清,所以才導致每次失敗!徹底搞清快排動作邏輯,這樣即使長時間不用也能臨時寫出來!思路 1.就像選擇排序每排一次序排好最小 大值一樣,快速排序每排一次序 會 將中軸值 預設取陣列第...

快速排序演算法 基礎

快速排序的演算法的核心思想是設定乙個值,把比這個值大的往右 扔 比這個值小的往左 扔 陣列快速排序的過程 設定兩個變數i j,排序開始時 i 0,j n 1 n為排序總數 以陣列中的第乙個元素作為比較的值,賦給變數key,即key a 0 首先從j往前搜尋,即從後往前 j 找到第乙個小於key的值a...