搜尋是在乙個專案集合中找到乙個特定專案的演算法過程, 返回乙個布林值。 搜尋的幾種常見方法:順序查詢、二分法查詢、二叉樹查詢、雜湊查詢
二分查詢也叫折半查詢, 優點是比較次數少, 但是只能是在有序的序列中才能用此方法,
查詢過程:首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功
非遞迴實現
#
defsearch(li
,item):
#first=0
#5#last
=len(li
)-1#
8#while
first
<
=last:
#mid_index=(
first
+last)/
/2#4
#ifli[
mid_index] =
=item:
#return
true
#elif
item
mid_index]:
#last
=mid_index-1
#else:
#first
=mid_index+1
#return
false#if
__name__==
'__main__':#
li=[17
,20,26
,31,44
,54,55
,77,93
]#print
(search(li
,93))
遞迴實現def
search(li
,item):
mid_index
=len(li
)//2
iflen(li
)<=0
:#這裡就不需要first與last
,遞迴退出條件
return
false
else:
ifli
[mid_index] =
=item:
return
true
elif
item
mid_index]:
#item比中間值小
,return
search(li
[:mid_index],
item
)取的前半部分
else:
return
search(li
[mid_index+1
:],item)#
本身已經不需要比較
,後半部分,+
1是因為不用考慮自己
if__name__==
'__main__':li
=[1,
2,4,
7,8,
56,78,
97,99]
print
(search(li
,99))
python演算法與資料結構 搜尋
搜尋是指查詢乙個數列中乙個元素是否存在 條件 要求處理的數列是經過排序的,操作物件支援下標索引,也就是說元素要連續,那麼也就是只能處理順序表 演算法過程 一,將游標定位到中間位置,判斷目標數字 與當前的數字 的大小,如果 大於 則向右查詢,反之,向左迭代查詢 時間複雜度 最壞情況 o log n 對...
資料結構 演算法 搜尋與查詢
搜尋 搜尋是在乙個專案集合中找到乙個特定專案的演算法過程。搜尋通常的答案是真的或假的,因為該專案是否存在。搜尋的幾種常見方法 順序查詢 二分法查詢 二叉樹查詢 雜湊查詢 二分法查詢 二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半...
搜尋與資料結構
最簡單的搜尋當然分為兩種,深度優先搜尋和廣度優先搜尋。這兩種演算法分別採用了棧和佇列的資料結構來實現。對於深搜,優化方法通常是各種剪枝,主要包括最優化剪枝和可行性剪枝。對於廣搜,優化方式通常是進行重複去除和優先搜尋。通常都說能用深搜不用廣搜,其實在一定條件下確實有道理。在很多情況下,深度優先搜尋通常...