python實現二分查詢

2021-10-14 08:41:50 字數 967 閱讀 8493

二分搜尋是一種在有序陣列中查詢某一特定元素的搜尋演算法。搜尋過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜尋過程結束;如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟開始一樣從中間元素開始比較。如果在某一步驟陣列為空,則代表找不到。這種搜尋演算法每一次比較都使搜尋範圍縮小一半。

def

binarysearch

(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 =[12

,23,44

,10,40

] x =

10# 函式呼叫

result = binarysearch(arr,0,

len(arr)-1

, x)

if result !=-1

:print

("元素在陣列中的索引為 %d"

% result )

else

:print

("元素不在陣列中"

)

Python實現二分查詢

二分查詢 二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表...

Python實現二分查詢

二分查詢 每次能夠排除掉一半的資料,查詢的效率非常高,但是侷限性比較大。必須是有序序列才可以使用二分查詢。1.非遞迴演算法 def binary search lis,nun left 0 right len lis 1 while left right 迴圈條件 mid left right 2 ...

二分查詢 Python實現

二分查詢也稱折半查詢 binary search 它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列。首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成前 後兩個子表,...