資料結構與演算法 搜尋

2021-09-29 21:29:48 字數 1726 閱讀 8504

搜尋是在乙個專案集合中找到乙個特定專案的演算法過程, 返回乙個布林值。 搜尋的幾種常見方法:順序查詢、二分法查詢、二叉樹查詢、雜湊查詢

二分查詢也叫折半查詢, 優點是比較次數少, 但是只能是在有序的序列中才能用此方法,

查詢過程:首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功

非遞迴實現

#

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 對...

資料結構 演算法 搜尋與查詢

搜尋 搜尋是在乙個專案集合中找到乙個特定專案的演算法過程。搜尋通常的答案是真的或假的,因為該專案是否存在。搜尋的幾種常見方法 順序查詢 二分法查詢 二叉樹查詢 雜湊查詢 二分法查詢 二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半...

搜尋與資料結構

最簡單的搜尋當然分為兩種,深度優先搜尋和廣度優先搜尋。這兩種演算法分別採用了棧和佇列的資料結構來實現。對於深搜,優化方法通常是各種剪枝,主要包括最優化剪枝和可行性剪枝。對於廣搜,優化方式通常是進行重複去除和優先搜尋。通常都說能用深搜不用廣搜,其實在一定條件下確實有道理。在很多情況下,深度優先搜尋通常...