二分查詢的python實現

2021-08-21 10:26:54 字數 625 閱讀 1128

二分查詢(折半查詢)

條件:線性表必須採用順序儲存,且關鍵碼有序

原理:在有序表中取中間記錄作為比較物件,若給定值與中間記錄的關鍵字相等則查詢成功

若更定值小於中間記錄的關鍵字,則在中間記錄的左半區繼續查詢

若給定值大於中間記錄的關鍵字,則在中間記錄的右半區繼續查詢

……不斷重複上述過程,直到查詢成功,或所有查詢區域無記錄,查詢失敗為止

#!/usr/bin/env python

def binary_search(l,key):

low=0

high=len(l)-1

while high>=low:

mid=(high+low)/2

if l[mid]>key:

high=mid-1

elif l[mid]low=mid+1

else:

return mid

else:

return "no exist"

if __name__ == '__main__':

l=[0,1,16,24,35,47,59,62,73,88,99]

print binary_search(l,62)

Python實現二分查詢

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

Python實現二分查詢

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

二分查詢 Python實現

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