二分、三分查詢演算法模板
阿新 • • 發佈:2019-01-30
二分、三分查詢演算法的原理及實現程式碼。
簡單定義
在一個單調有序的集合中查詢元素,每次將集合分為左右兩部分,判斷解在哪個部分中並調整集合上下界,重複直到找到目標元素。
時間複雜度
O (logn),優於直接順序查詢O(n)
原理
左閉右開二分
123456789101112131415161718 |
int search2(int array[], int n, int v) { int left, right, middle; left = 0, right = n; //左閉右開區間的二分查詢。 while |
STL
Double型二分
while(fabs(right-left)>eps)//判斷語句 注:1、right與left之差進行判斷 2、eps的值夠精度,不然很容易wa
三分法
在二分查詢的基礎上,在右區間(或左區間)再進行一次二分,這樣的查詢演算法稱為三分查詢,也就是三分
當需要求某凸性或凹形函式的極值,通過函式本身表示式並不容易求解時,就可以用三分法不斷逼近求解。