分治演算法 1 二分查詢

2021-06-16 20:19:44 字數 1067 閱讀 3241

:把問題劃分成子問題

:遞迴的求解子問題

:把子問題的解合併成問題的解

在電腦科學中,二分查詢又稱為折半搜尋,二分搜尋,是一種在有序陣列中查詢某一特定元素的演算法。搜素過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜素過程結束;如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟開始一樣從中間元素開始比較。如果在某一步驟陣列為空,則代表找不到。這種搜尋演算法每一次比較都使搜尋範圍縮小一半。

時間複雜度:o(lgn),折半搜尋每次都把搜尋區域減少一半。

空間複雜度:o(1)。

:驗證中間元素

:遞迴查詢乙個子串

:trivial

1.遞迴實現

int binary_search_in_recursion(const int arr, int left, int right, int target)

2.非遞迴實現

int binary_search_not_recursion(const int arr, int left, int right, int target)

return -1;

}

3.旋轉過後的排序陣列的二分查詢

int binary_search_for_rotated_array(const int arr, int left, int right, int target)

}else }}

return -1;

}

:::

分治演算法之二分查詢

c 提供一類stl函式來實現對陣列中元素的檢索,其中較為簡單且應用較廣的是binary search,upper bound和lower bound,它們都被包含在標頭檔案 include中。lower bound g 用來找以g為下界的第乙個元素,而upper bound g 則用來找以g為上界的...

分治 二分查詢

在我被二分木棍,二分求解高次方程組等等問題卡精度卡到懷疑人生之後,我決定這次用最簡單的例子來介紹一下二分查詢這個演算法。演算法核心 二分演算法的核心就是通過待查詢資料與查詢域中值的大小關係來縮小查詢範圍,二分查詢的時間複雜度為o logn 演算法流程 num 待查詢資料 a 查詢範圍 l 查詢範圍起...

二分查詢演算法1

include 二分查詢法一 using namespace std int binary search int b,int value,int n 9 int hight 9,low 0,mid while hight low 注意兩者相等的情況 mid hight low 2 if value ...