順序查詢(sequential search)又叫線性查詢,是最基本的查詢技術,它的查詢過程是:從表中第乙個(或最後乙個)記錄開始,逐個進行記錄的關鍵字和給定值比較,若某個記錄的關鍵字和給定值相等,則查詢成功,找到所查的記錄;如果直到最後乙個(或第乙個)記錄,其關鍵字和給定值比較都不等時,則表中沒有所查的記錄,查詢不成功。
1.普通順序查詢:
int
sequential_search
(int
a,int key)
}return-1
;}
2.優化後的順序查詢:
設定乙個哨兵,可以解決不需要每次讓i與n作比較。
int
sequential_search
(int
a,int key)
a[0]= key;
int i = a.
length()
-1;while
(a[i]
!= key)
if(i!=0)
return-1
;//沒有找到返回-1
}
這種在查詢方向的盡頭放置「哨兵」免去了在查詢過程中每一次比較後都要判斷查詢位置是否越界的小技巧,看似與原先差別不大,但在總資料較多時,效率提高很大,是非常好的編碼技巧。當然,「哨兵」也不一定就一定要在陣列開始,也可以在末端。
複雜的分析:
對於這種順序查詢演算法來說,查詢成功最好的情況就是在第乙個位置就找到了,演算法時間複雜度為o(1),最壞的情況是在最後一位置才找到,需要n次比較,時間複雜度為o(n),當查詢不成功時,需要n+1次比較,時間複雜度為o(n)。關鍵字在任何一位置的概率是相同的,所以平均查詢次數為(n+1)/2,最終時間複雜度還是o(n)。
順序表查詢
一 查詢概論 1 查詢表 查詢表是由同一型別的資料元素或記錄構成的集合。2 關鍵字 關鍵字是資料元素中某個資料項的值,又稱為鍵值,用它可以標識乙個資料元素。也可以標識乙個記錄的某個資料項 字段 稱為關鍵碼。若此關鍵字可以唯一標識乙個記錄,則稱此關鍵字為主關鍵字,所以對於不同的記錄,其主關鍵字是不相同...
順序表查詢
順序查詢又叫線性查詢,是最基本的查詢技術,它的查詢過程是 從表中第乙個 或最後乙個 記錄開始逐個進行記錄的關鍵字和給定值比較,若某個記錄的關鍵字和給定值相等,則查詢成功 如果直到最後乙個 或第乙個 記錄,其關鍵字和給定值比較都不相等時,則表中沒有所查的記錄,查詢不成功。順序查詢的演算法如下 順序查詢...
順序表的順序查詢和折半查詢
順序查詢 include using namespace std intseqsearch int r,int n,int k return i int main int k cout 請輸入要查詢的數 k for int i 1 i n i cout 該數在陣列中的位置為 cout seqsear...