Python二分查詢

2021-07-27 17:21:21 字數 1003 閱讀 8179

二分查詢又稱折半查詢,首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。

def

binarysearch

(find,list1):

low=0

high=len(list1)

while low<=high:

mid=int((low+high)/2)

if list1[mid]==find:

return mid

#所查數在middle數的左邊

elif list1[mid]>find:

high=mid-1

#所查數在middle數的右邊

else :

low=mid+1

#沒找到

return -1

list1=[3,1,5,2,6,8,9,7]

#在進行二分查詢前必須保證查詢的序列是有序的

list1.sort()

find=int(input('請輸入要查詢的數:'))

print('原有序列為:',list1)

r=binarysearch(find,list1)

if r==-1:

print('沒找到你要查詢的數!')

else:

print('你要查詢的數%d的序列號為:%d'%(find,r))

測試結果:

python 二分查詢

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

二分查詢(Python)

演算法介紹 二分查詢要求陣列為有序排列,每次取中間的數與target進行比較,若相等,則查詢成功 若中間數較大,則在前一部分查詢,反之,在後一部分查詢。其時間複雜度為o logn 演算法實現def binarysearch nums,target if not nums return false s...

python 二分查詢

二分查詢也稱折半查詢 binary search 它是一種效率較高的查詢方法。其輸入是乙個有序的元素列表 必須是有序的 如果查詢的元素包含在列表中,二分查詢返回其位置,否則返回null 比如說有乙個1 100的數字,我隨機的選擇其中乙個數字 假設為10 你需要以最少的次數猜到我所選擇的數字,每次猜測...