資料結構與演算法之查詢

2021-10-19 23:17:03 字數 2990 閱讀 2112

學習筆記

參考:資料結構與演算法 - 查詢

3 樹表查詢

查詢就是在指定的某列有序或無序資料中按照給定的條件找到符合條件的資料。

查詢分為:

線性表:適用於靜態查詢(順序查詢、折半查詢)

:適用於動態查詢(二叉排序樹上的查詢)

雜湊表:適用於靜、動態查詢(雜湊查詢)

查詢演算法的衡量指標:參考 資料結構與演算法 - 查詢

順序查詢的基本思想

在一組資料中,從第乙個資料開始,按照排列順序逐個與給定的值進行比較。若某個資料與給定值相等,則查詢成功,找到所查資料的位置;反之查詢不成功。

順序查詢與二分查詢**演示

引用:一張圖詮釋了二分查詢和順序查詢

順序查詢實現

# 順序查詢

def sequentialsearch(alist, item):

pos =

0 found =

false

while pos <

len(alist)

andnot found:

if alist[pos]

== item:

found =

true

else:

pos = pos +

1return found

testlist =[1

,2,32

,8,17

,19,42

,13,0

]print

(sequentialsearch(testlist,3)

)print

(sequentialsearch(testlist,13)

)

時間複雜度二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好;其缺點是要求待查表為有序表,且插入刪除困難。

因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表

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

順序查詢與二分查詢**演示

引用:一張圖詮釋了二分查詢和順序查詢

二分查詢實現

非遞迴實現

def binary_search(arr,target):

low =

0 high =

len(arr)-1

while low <= high:

mid =

(low+high)

//2 guess = arr[mid]

if guess =

= target:

return

true

elif guess < target:

low = mid+

1else:

high = mid-

1return

false

testlist =[0

,1,2

,8,13

,17,19

,32,42

,]print

(binary_search(testlist,3)

)print

(binary_search(testlist,13)

)'''false

true

'''

遞迴實現

def binary_search(arr,target):

n =len(arr)

if n>

0: #遞迴的退出條件

mid = n//2

if arr[mid]

== target:

return

true

elif target

return binary_search(arr[:mid]

,target)

else:

return binary_search(arr[mid+

1:],target)

return

false

testlist =[0

,1,2

,8,13

,17,19

,32,42

,]print

(binary_search(testlist,3)

)print

(binary_search(testlist,13)

)

時間複雜度分塊查詢又稱索引順序查詢,它是順序查詢的一種改進方法

引用:

資料結構之查詢演算法

在日常生活中,幾乎每天都要進行一些查詢的工作,在 簿中查閱某個人的 號碼 在電腦的資料夾中查詢某個具體的檔案等等。本節主要介紹用於查詢操作的資料結構 查詢表。查詢表是由同一型別的資料元素構成的集合。例如 號碼簿和字典都可以看作是一張查詢表。一般對於查詢表有以下幾種操作 在查詢表中只做查詢操作,而不改...

資料結構與演算法之查詢演算法一 順序查詢

問題 在已知序列中找出與給定關鍵字相同的數的具體位置。解決方案 讓關鍵字與佇列中的數從第乙個開始逐個比較,直到找到與給定關鍵字相同的數為止。輸入 序列 71 23 56 85 17 29 93 64 39 49 輸出 若找到,則輸出查詢到的元素 位置和查詢次數 否則輸出 對不起,沒有這個數!如下 f...

資料結構與演算法(查詢)

1 查詢表 用於查詢的資料集合,由同一型別的資料元素組成,經常進行的操作 2 靜態查詢表 無需動態修改查詢表的操作,都是靜態查詢表。適合的查詢方法有順序查詢 折半查詢 雜湊查詢。3 動態查詢表 需要動態插入或刪除的操作。適合的查詢方法有二叉排序樹查詢 雜湊查詢。4 關鍵字 資料元素中唯一表示該元素的...