二分查詢法

2021-09-26 04:18:17 字數 842 閱讀 6163

首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,

如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果

中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢

後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不

存在為止,此時查詢不成功。-文字描述摘自360搜尋,侵刪

#二分查詢法 o(logn)

#list:有序陣列 item:要查詢的元素

def binary_search(list,item):

#記錄開始查詢的起始位置的索引

low = 0

#記錄查詢結束位置的索引

high=len(list)-1

while low<=high:

#整除 // ,保證得到的數是乙個整數

#mid:記錄陣列中間位置的索引

mid=(low+high) //2

guess = list[mid]

if guess < item :

low = mid + 1

elif guess > item:

high = mid -1

else:

return mid

return none

my_list = [143,21,31,44,5]

#index:查詢的元素在陣列中的位置,有則返回數字,無則返回none

index=binary_search(my_list,44)

print(index)

#結果是3

二分查詢法

二分查詢要求 1.必須採用順序儲存結構 2.必須按關鍵字大小有序排列。優缺點 折半查詢法的優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。演算法思想 首先,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者...

二分查詢法

有序陣列中的find 方法 public int find long serchkey int lowerbound 0 int upperbound nelems 1 while true curin lowerbound upperbound 2 if a curin serchkey retu...

二分查詢法

演算法基本思想 二分查詢演算法的前置條件是,乙個已經排序好的序列 假設這個序列是公升序排列的 這樣在查詢所要查詢的元素時,首先與序列中間的元素進行比較,如果大於這個元素,就在當前序列的後半部分繼續查詢,如果小於這個元素,就在當前序列的前半部分繼續查詢,直到找到相同的元素,或者所查詢的序列範圍為空為止...