寫出兩種檢索演算法:在乙個排好序的陣列t[1…n]中查詢x,如果x在t中,輸出x在t的下標j;如果x不在t中,輸出j=0
順序查詢:對於任意乙個序列以及乙個給定的元素,將給定元素與序列中元素依次比較,直到找出與給定關鍵字相同的元素,或者將序列中的元素與其都比較完為止。
在本題中,我們將按順序依次查詢給定的t陣列,將之與x做比較
**:
//順序查詢
// 在乙個排好序的陣列t[1..n]中查詢x,如果x在t中,輸出x在t的下標j;如果x不在t中,輸出j=0
#include
int n,x;
int t[
10000];
//定義t陣列存放資料
void
search
(int x,
int n)
}printf
("%d\n"
,j);
}
該段**只用到乙個for迴圈,因此時間複雜度為o(n)
二分查詢也稱折半查詢(binary search),它是一種效率較高的查詢方法。但是,二分查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列。
**:
//順序查詢
// 在乙個排好序的陣列t[1..n]中查詢x,如果x在t中,輸出x在t的下標j;如果x不在t中,輸出j=0
#include
int n,x;
int t[
10000];
//定義t陣列存放資料
void
search
(int x)
else
if(x>t[a1]
)else
if(x==t[a1])}
printf
("%d"
,j);
}
共有n個元素,二分後每次查詢的區間大小就是n,n/2,n/4,…,n/2k,其中k就是迴圈的次數。
最壞的情況下找到想要的元素,令n/2k=1,可得k=log2n
因此時間複雜度為o(logn).
演算法分析與設計作業3
寫出兩種檢索演算法 在乙個排好序的陣列t 1.n t 1.n t 1.n 中查詢x xx,如果x xx在t tt中,輸出x xx在t tt的下標j jj 如果x xx不在t tt中,輸出j 0 j 0j 0.按實驗模板編寫,分析 部分僅給出複雜度結果即可。方法一 直接遍歷查詢,乙個乙個比對t i t...
演算法分析設計 作業3 檢索演算法
寫出兩種檢索演算法 在乙個排好序的陣列t 1 n 中查詢x,如果x在t中,輸出x在t的下標j 如果x不在t中,輸出j 0。一 順序查詢 順序查詢也稱為線性查詢,屬於無序查詢演算法,適用於儲存結構為順序結構或鏈式儲存的線性表。從資料結構線性表的一端開始,順序掃瞄,依次將掃瞄到的節點關鍵字與給定查詢的x...
系統設計與分析 作業3
簡述瀑布模型 增量模型 螺旋模型 含原型方法 並分析優缺點 瀑布模型 定義 是將工作分為需求 設計 實現 驗證 維護等等階段,這些階段動的工作物件來自於上一項活動的輸出,這些輸出一般是代表本階段活動結束的里程碑式的文件。每個階段根據本階段的活動規程執行相應的任務,並對本階段活動執 況進行評審。優點 ...