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