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