演算法分析與設計 作業3

2021-10-22 20:36:27 字數 1087 閱讀 3833

寫出兩種檢索演算法:在乙個排好序的陣列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

簡述瀑布模型 增量模型 螺旋模型 含原型方法 並分析優缺點 瀑布模型 定義 是將工作分為需求 設計 實現 驗證 維護等等階段,這些階段動的工作物件來自於上一項活動的輸出,這些輸出一般是代表本階段活動結束的里程碑式的文件。每個階段根據本階段的活動規程執行相應的任務,並對本階段活動執 況進行評審。優點 ...