二分查詢法

2021-10-09 11:32:52 字數 1624 閱讀 9612

一:二分法查詢

思想:1.假設表中元素是按照公升序排列的,將表中間位置記錄的關鍵字與查詢的關鍵字進行對比,如果相等則查詢成功;

2.否則利用中間位置記錄將表分為前後兩個字表,如果中間位置記錄的關鍵字大於查詢的關鍵字,則進一步查詢前一字表,否則進一步查詢後一字表。

3.重複以上過程,知道查詢到滿足條件的記錄,或者知道字表不存在為止。

python**實現:

(一):非遞迴實現:

def

binary_search

(list

,item):

first =

0 last =

len(

list)-

1while first<=last:

midpoint=

(first+last)//2

iflist

[midpoint]

== item:

return ture

elif item<

list

[midpoint]

: last=midpoint-

1else

: first=midpoint+

1return false

if __name__ ==

"__main__"

: testlist =[0

,1,2

,8,13

,17,19

,32,42

,]print

(binary_search(testlist,3)

)

(二):遞迴實現:

def

binary_search

(list

, item):if

len(

list)=

0:return false

else

: midpoint=

len(

list)//

2iflist

[midpoint]

== item

return ture

else

:if item<

list

[midpoint]

:return binary_search(

list

[:midpoint]

,item)

else

:if item >

list

[midpoint]

:return binary_search(

list

[midpoint:

],item)

if __name__ ==

"__main__"

: testlist =[0

,1,2

,8,13

,17,19

,32,42

,100

]print

(binary_search(testlist,3)

)print

(binary_search(testlist,13)

)

二分查詢法

二分查詢要求 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...

二分查詢法

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