1、二分查詢法的執行時間為對數時間o(㏒₂n) ,即查詢到需要的目標位置最多只需要㏒₂n步,假設從[0,99]的佇列(100個數,即n=100)中尋到目標數30,則需要查詢步數為㏒₂100 , 即最多需要查詢7次( 2^6 < 100 < 2^7)
首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。
public
class
binarynorecur
;int inedx=
binarynorecur
(arr,7)
; system.out.
println
(inedx);}
public
static
intbinarynorecur
(int
arr,
int target)
else
if(arr[mid]
> target)
else
}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 ...