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

2021-10-04 00:00:59 字數 847 閱讀 1489

寫出兩種檢索演算法:

在乙個排好序的陣列t[1…n]中查詢x,如果x在t中,輸出x在t的下標j;如果x不在t中,輸出j=0。

一、順序查詢

順序查詢也稱為線性查詢,屬於無序查詢演算法,適用於儲存結構為順序結構或鏈式儲存的線性表。

從資料結構線性表的一端開始,順序掃瞄,依次將掃瞄到的節點關鍵字與給定查詢的x相比較,若相等則表示查詢成功,若掃瞄結束仍沒有找到與x相等的值則查詢失敗。

二、二分查詢

二分查詢也稱折半查詢,屬於有序查詢演算法,適用於有序表。

選取順序表的中間結點,將給定的x值與數列中間結點的關鍵字比較,若相等則查詢成功;若不相等,判斷x值與中間結點的大小,選取正確的一段再進行中間值的比較,直到查詢到或表中沒有與x值相等的中間結點。

//順序查詢:

for(i =

0; i < n;

++i)

}//二分查詢:

left =

0; right = n -1;

while

( left <= right)

else

if(key < t[middle]

) right = middle -1;

else

left = middle +1;

}

順序查詢時間複雜度:o(n)

二分查詢時間複雜度:o(log n)

演算法分析與實踐 作業3 檢索演算法

寫出兩種檢索演算法 在乙個排好序的陣列t 1 n 中查詢x,如果x在t中,輸出x在t的下標j 如果x不在t中,輸出j 0.順序查詢 是最簡單最暴力的查詢方法,就是從頭到尾遍歷陣列的過程。二分查詢 首先要求陣列是有序的。假設有乙個公升序排列的陣列,在該陣列中查詢元素 key。首先找出該陣列中最中間的元...

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

寫出兩種檢索演算法 在乙個排好序的陣列t 1 n 中查詢x,如果x在t中,輸出x在t的下標j 如果x不在t中,輸出j 0。1 順序查詢 從順序表的一端開始,依次將每個元素的關鍵字同給定值 k 進行比較,直到相等或比較完畢還未找到即結束。2 折半查詢 查詢過程是首先取整個有序表 a 0 a n 1 的...

演算法分析與設計 檢索演算法

在乙個排好序的陣列t 1 n 中查詢x,如果x在t中,輸出x在t的下標j 如果x不在t中,輸出j 0.樸素演算法 遍歷陣列t中的每乙個元素,當查詢到x時,停止查詢,輸出下標。二分查詢 因為當前的陣列t是排好序的,所以直接可以進行二分查詢,設定兩個變數,l,r l t 1 r t n 每次取mid l...