排序 與查詢(快排 並歸)

2021-10-21 19:48:58 字數 1340 閱讀 9878

1找到pivot元素 x=q[l+r>>1]

2 將將元素分成兩組

3 遞迴

**

1

)void

quick_sort

(int q,

int l,

int r)

quick_sort

(q, l, j)

,quick_sort

(q, j +

1, r);}

2)void

quick__sort

(int a,

int l ,

int r)

a[j]

=x;quick__sort

(a, l, j-1)

;quick__sort

(a, j+

1, r)

;}

int

quicksort

(int l,

int r,

int k)}if

(k <= j)

return

quicksort

(l, j, k)

;else

return

quicksort

(j+1

, r, k)

;}

是否滿足性質的二分

bool

check

(int x)

// 檢查x是否滿足某種性質

// 區間[l, r]被劃分成[l, mid]和[mid + 1, r]時使用:

intbsearch_1

(int l,

int r)

return l;

}// 區間[l, r]被劃分成[l, mid - 1]和[mid, r]時使用:

intbsearch_2

(int l,

int r)

return l;

}

typedef

struct

recordtype;

intsearch

(recordtype r,

int n,keytype k)

return-1

;//查詢失敗,返回-1

}

1.找到mid =r+l>>2

2.將兩個集合分別排序

3.歸併 到tmp陣列

**

void

merge_sort

(int q,

int l,

int r)

排序 快排與歸併

目錄歸併排序 1.隨機找到乙個基準數.2.將所有小於他的數放在左邊,所有大的數放在右邊.3.最後重複以上操作,直至各部分左右指標相遇.如gif所示,乙個無序的陣列3 5 8 1 2 9 4 7 6 把右端點作為基準數,然後左指標開始從左掃瞄,當遇 6 的數時停止,此時右指標就開始掃瞄,當遇到 6 的...

並歸排序演算法

並歸排序演算法 控制台程式 static void main string args private static int method int nomethoddata for int i 0 i nomethoddata.length i else left method left 左側陣列遞迴...

排序實現與分析 快排

描述 快速排序,是乙個很重要的排序演算法,當然其平均效能也比較高,他的思想我借鑑紀磊在啊哈演算法中的形容來描述。在快排中,我們把待排序資料 如上圖 中的第乙個資料拿出來,稱他為基準,就是拿接下來的數字都跟他進行比較,如下圖所示,我們假設有兩個炮兵 此處紅五角星標識 乙個在資料的最左邊,乙個在資料的最...