二分搜尋是一種在有序陣列中查詢某一特定元素的搜尋演算法。搜尋過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜尋過程結束;如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟開始一樣從中間元素開始比較。如果在某一步驟陣列為空,則代表找不到。這種搜尋演算法每一次比較都使搜尋範圍縮小一半。
# 返回 x 在 arr 中的索引,如果不存在返回 -1
defbinarysearch
(arr, l, r, x)
:# 基本判斷
if r >= l:
mid =
int(l +
(r - l)/2
)# 元素整好的中間位置
if arr[mid]
== x:
return mid
# 元素小於中間位置的元素,只需要再比較左邊的元素
elif arr[mid]
> x:
return binarysearch(arr, l, mid-
1, x)
# 元素大於中間位置的元素,只需要再比較右邊的元素
else
:return binarysearch(arr, mid+
1, r, x)
else
:# 不存在
return-1
# 測試陣列
arr =[2
,3,4
,10,40
] x =
10# 函式呼叫
result = binarysearch(arr,0,
len(arr)-1
, x)
if result !=-1
:print
("元素在陣列中的索引為 %d"
% result )
else
:print
("元素不在陣列中"
)
Python二分查詢
二分查詢又稱折半查詢,首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成前 後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成...
python 二分查詢
搜尋過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜尋過程結束 如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟開始一樣從中間元素開始比較。如果在某一步驟陣列為空,則代表找不到。這種搜尋演算法每一次比較都使搜尋範圍縮小一半 param array ...
二分查詢(Python)
演算法介紹 二分查詢要求陣列為有序排列,每次取中間的數與target進行比較,若相等,則查詢成功 若中間數較大,則在前一部分查詢,反之,在後一部分查詢。其時間複雜度為o logn 演算法實現def binarysearch nums,target if not nums return false s...