二分法查詢的基礎知識(遞迴形式和迴圈形式)

2021-10-24 07:37:00 字數 1381 閱讀 5267

二分查詢又稱折半查詢,首先,假設表中元素是按公升序排序,將表中間位置的關鍵字與查詢關鍵字比較:

如果兩者相等,則查詢成功;

否則利用該中間位置,劃分出前、後兩個子表:

①如果中間位置的關鍵字大於查詢關鍵字,則進一步查詢前乙個子表

②否則查詢後乙個子表

重複上述的過程,直到找到目標關鍵字,輸出查詢成功,或者查到子表不存在為止,則查詢不成功。

比如,待搜尋數字target == 2

陣列a = [-1,2,5,20,90,100,207,800]

待查詢值target = 2

下標:[ 0, 1, 2, 3, 4, 5, 6, 7]

nums:[-1,2,5,20,90,100,207,800]

第一次搜尋:

搜尋區域:[0,7][-1,2,5,20,90,100,207,800]

搜尋target = 2 小於 nums[mid] = 20;

第二次搜尋:

搜尋區域:[0,2][-1,2,5]

搜尋target = 2 等於 nums[mid] == 2;

故找到遞迴形式如下:

bool

binary_search

(vector<

int>

&sort_array,

int begin,

int end,

int target)

int mid =

(begin + end)/2

;if(target == sort_array[mid]

)else

if(target < sort_array[mid]

)else

if(target > sort_array[mid]

)

迴圈的形式如下:

bool

binary_search

(vector<

int>

&sort_array,

int target)

else

if(target < sort_array[mid]

)else

if(target > sort_array[mid])}

return

false

;}

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...

遞迴二分法查詢

二分法使用了折半查詢的思想,不斷的變化,陣列下標的起始位置 begin 和終止位置 end 來進行搜尋。我們使用兩種演算法,解決二分查詢 public class solution system.out.println solution.sort number,0,number.length,56 ...

二分法查詢 遞迴

需求 查詢陣列中某個元素的下標 實現方法 二分法查詢 折半查詢,每次把錶分成兩半,因為已經排好序,所以每次只需要和中間的數比較,就能確定要查詢的值在哪一半,然後不斷分成兩半,直到匹配,如果沒有找到,則表示沒有該元素 public static int find int x int min 0 int...