python實現二分查詢

2021-10-05 04:41:43 字數 594 閱讀 3230

二分查詢針對的是已經排好序的序列,這點要著重注意

原理比較簡單,每次切分後與分割點的值進行比較,更大則在大數的一側進行再切分,更小則在小數的一側進行再切分

l = [5, 13, 26, 25, 20, 15, 65, 51, 41]

# sort()是對本身進行排序,而sorted是產生新的排序的序列

li = sorted(l)

low = 0

high = len(li)-1

x = int(input("please input search num:"))

def search(i, j, key):

while i <= j:

m = (i+j)//2

if key < li[m]:

j = m

elif key > li[m]:

i = m+1

else:

return i

return -1

hwq = search(low, high, x)

print(hwq)

Python實現二分查詢

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

Python實現二分查詢

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

二分查詢 Python實現

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