演算法分析與設計作業三 檢索演算法

2021-10-22 20:32:24 字數 819 閱讀 4926

寫出兩種檢索演算法:在乙個排好序的陣列t[1…n]中查詢x,如果x在t中,輸出x在t的下標j;如果x不在t中,輸出j=0。

(1)順序查詢:

從順序表的一端開始,依次將每個元素的關鍵字同給定值 k 進行比較,直到相等或比較完畢還未找到即結束。

(2)折半查詢:

查詢過程是首先取整個有序表 a[0] ~ a[n - 1] 的中點元素 a[mid] (mid = (0 + n -1) / 2) 的關鍵字同給定值 k 比較,相等則成功,若 k較小,則對剩餘的左半部分進行同樣操作,若k較大,則對其剩餘的右半部分進行同樣的操作,直到找到與k相等的值或者比較完畢還未找到即結束。

(1)順序查詢:

sequentialsearch

(a[0

,n],k)

a[n] ← k

i ← 0

while a[i] ≠ k do

i ← i+

1if ielse

return

-1

(2)折半查詢:
binarysearch

(a[0…n-1]

,k)l ← 0

; r ← n-

1while l ≤ r do

m←((l+r)/2

)向下取整

if k=a[m]

return m

else

if k1else l←m+

1return

-1

(1)順序查詢:o(n)

(2)折半查詢:o(log2 n)

(1)順序查詢:

(2)折半查詢:

演算法分析與設計實踐 作業三 檢索

一 問題描述 寫出兩種檢索演算法 在乙個排好序的陣列t 1 n 中查詢x,如果x在t中,輸出x在t的下標j 如果x不在t中,輸出j 0.二 解析 1.順序查詢 遍歷資料元素 2.二分查詢 演算法原理 在查詢表中不斷取中間元素與查詢值進行比較,以二分之一的倍率進行表範圍的縮小。三 設計 void mi...

演算法分析與設計實驗三 檢索演算法設計

在乙個排好序的陣列t 1 n 中查詢x,如果x在t中,輸出x在t的下標j 如果x不在t中,輸出j 01.順序查詢 從第乙個元素x開始逐個與需要查詢的元素key進行比較,當x key時返回x的下標,如果比較到最後都沒有找到,則返回j 0 2.二分查詢 不斷地將有序陣列進行對半分割,並檢查每個分割槽的中...

演算法分析設計 作業3 檢索演算法

寫出兩種檢索演算法 在乙個排好序的陣列t 1 n 中查詢x,如果x在t中,輸出x在t的下標j 如果x不在t中,輸出j 0。一 順序查詢 順序查詢也稱為線性查詢,屬於無序查詢演算法,適用於儲存結構為順序結構或鏈式儲存的線性表。從資料結構線性表的一端開始,順序掃瞄,依次將掃瞄到的節點關鍵字與給定查詢的x...