使用此演算法的前提是,要查詢的範圍為有序範圍。
一組數: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 ...