python搜尋演算法實現 (一)二分查詢法

2021-08-24 23:10:34 字數 1221 閱讀 5701

二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。

def

binary_search

(alist, item):

if len(alist) == 0:

return

false

else:

midpoint = len(alist) // 2

if alist[midpoint] == item:

return

true

else:

if item < alist[midpoint]:

return binary_search(alist[:midpoint], item)

else:

return binary_search(alist[midpoint+1:], item)

testlist = [0, 5, 6, 8, 44, 56, 85, 86, 89, 92, 94, 98, 102]

print(binary_search(testlist, 44))

print(binary_search(testlist, 45))

def

binary_search

(alist, item):

first = 0

last = len(alist) - 1

while first < last:

midpoint = round((first + last) / 2)

if alist[midpoint] == item:

return

true

elif item < alist[midpoint]:

last = midpoint - 1

else:

first = midpoint + 1

return

false

最優時間複雜度:o(1)

最壞時間複雜度:o(logn)

二分搜尋演算法,Java實現

這裡用遞迴和非遞迴的方式實現了二分搜尋 ps 二分搜尋是對已經排序完成的陣列進行搜尋定位,我這裡是以公升序排列為例,可用歸併排序等演算法進行排序 可見我其他博文 二分搜尋演算法,通過比較順序列表中間元素的值,迅速縮小規模查詢元素,時間複雜度為 o n logn public class binary...

二分搜尋演算法

今天我勉強搞懂了二分查詢演算法,我覺得很有收穫,這是個不錯的演算法,希望還不知道 不懂二分演算法的朋友能看看!二分查詢 二分查詢的前提是陣列一定是有序的 傳入乙個陣列 t 傳入乙個查詢元素 t key 返回查詢結果 class myutil else if key.compareto x mid 0...

二分搜尋演算法

在電腦科學中,二分搜尋 英語 binary search 也稱折半搜尋 英語 half interval search 對數搜尋 英語 logarithmic search 是一 種在有序陣列中查詢某一特定元素的搜尋演算法。搜尋過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜尋過程結束...