演算法學習 快速排序

2022-07-01 08:06:10 字數 730 閱讀 4547

快速排序(分治演算法)

const

int n = 1e6 + 10

;int

a[n];

//a:待排序陣列,l:排序陣列的起始下標,r:排序陣列的結束下標

void quick_sort(int a,int l,int

r) //

遞迴的終止條件

int x = a[l]; //

選取排序的比較物件

int i = l - 1; //

設定排序的左指標

int j = r + 1; //

設定排序的右指標

while(i//

只要左右指標沒相遇就迴圈進行

do i++; while( a[i]//

左指標向右尋找

do j--; while( a[j]>x ); //

右指標向左尋找

if(i//

如果找到了就交換兩個位置的變數

} quick_sort(a,l,j);

//遞迴左區間

quick_sort(a,j+1,r) //

遞迴右區間

}int

main()

quick(a,

0,n-1

);

for(int i=0;i)

cout

<}

演算法學習 快速排序

1 基本思想 取待排序陣列第乙個數作為參照數,建立left和right陣列,left儲存小於參照數的陣列集合,right儲存大於參照數的陣列集合,然後分別對left和right進行遞迴呼叫排序。2 舉例 11,2,3,43,23,5,6,9,10 取任意的乙個數為基準數 temp arr 0 遍歷陣...

排序演算法學習 快速排序

快速排序 作為氣泡排序的一種改進 通過設定乙個標誌值 通常為陣列第乙個元素pivot 一次快排將陣列分成兩個部分,一部分 公升序 前一部分 小於標誌值pivot,另一部分大於標誌值 公升序 後面部分 各部分內部可以是 通常也是 無序的。通過遞迴地呼叫這樣的排序,使得最終陣列所有的元素有序。一次具體的...

排序演算法學習 快速排序

今天演算法實驗重新學習了快速排序演算法,對此有了一些理解,把它記錄在此以供日後學習。如下為快速排序演算法的被呼叫部分。int get loc int arr int low,int high arr low arr i arr i temp return i 返回基準位置 演算法本質是從後往前與從前...