二分查詢遞迴演算法

2021-09-28 19:17:59 字數 551 閱讀 5914

使用此演算法的前提是,要查詢的範圍為有序範圍。

一組數:num[9]=

left mid right

步驟:1.left為最左端元素的下標,right為最右端元素的下標,mid為查詢區間的中間元素,key為要查詢的元素。

2.當left<=right的時候,比較num[mid]和key:

(1)num[mid]key,說明key在num[mid]的左邊,此時區間範圍為[left,mid-1],right=mid-1;返回2。

(3)num[mid]=key,結束。

3.當left>right時,代表這一集合中沒有key。

第2部分就是遞迴體,只不過分方向遞迴,類似於二叉樹。

public static int find(int  arr,int left,int right,int key)

if(arr[mid]if(arr[mid]==key)

mid=(left+right)/2;

}return -1;

}

二分查詢演算法(遞迴 非遞迴)

二分查詢 binary search 先來個比較官方的解釋 二分搜尋 英語 binary search 也稱折半搜尋 英語 half interval search 對數搜尋 英語 logarithmic search 是一種在有序陣列中查詢某一特定元素的搜尋演算法。搜尋過程從陣列的中間元素開始,如...

二分查詢演算法(遞迴 非遞迴)

二分查詢是針對有序序列來說的,在有序序列中使用二分查詢能大大提高查詢效率。首先確定整個查詢區間的中間位置 mid 用待查關鍵字key值與中間位置的關鍵字值進行比較 若相等,則查詢成功 若大於,則在後 右 半個區域繼續進行折半查詢 若小於,則在前 左 半個區域繼續進行折半查詢 對確定的縮小區域再按折半...

折半查詢法(遞迴二分演算法)(非遞迴二分演算法)

include include include define max 10001 using namespace std int a max key intsearch int bot,int top 傳過陣列下標來,恰好可以呼叫全域性變數a max 如果傳過來陣列,位置變動不如下標容易 else ...