順序表查詢

2021-10-04 14:16:19 字數 900 閱讀 5270

順序查詢又叫線性查詢,是最基本的查詢技術,它的查詢過程是:從表中第乙個(或最後乙個)記錄開始逐個進行記錄的關鍵字和給定值比較,若某個記錄的關鍵字和給定值相等,則查詢成功;如果直到最後乙個(或第乙個)記錄,其關鍵字和給定值比較都不相等時,則表中沒有所查的記錄,查詢不成功。

順序查詢的演算法如下:

/*順序查詢,a為待查陣列,n為陣列長度, key為要查詢的關鍵字*/

int search(int* a, int n, int key)

} return -1;

}

**非常簡單,就是在陣列中迴圈遍歷查詢,但是上述演算法每次迴圈時都要判斷變數i是否越界,比較麻煩,事實上我們還可以優化下上述**,為此,我們可以設定乙個哨兵來避免每次都要進行越界檢查,改進後的演算法**如下:

/*順序查詢,a為待查陣列,n為陣列長度, key為要查詢的關鍵字*/

int search(int* a, int n, int key)

return i;

}

上述**在查詢方向的盡頭放置哨兵免去了在查詢過程中每次都要判斷越界的問題,看似差距不大,但是賽總資料較多時,效率提高會非常明顯,是非常好的程式設計技巧,但是前提是要對陣列元素進行構造,或者使用stl容器。

對於這種順序查詢表來說,查詢最好的情況就是第乙個位置就找到了,演算法時間複雜度為o(1),最壞的情況是在最後乙個位置找到,需要比較n次,時間複雜度為o(n),當查詢不成功時需要比較n+1次,時間複雜度為o(n),基於任意位置的查詢概率是相同的,所以平均查詢次數為(n+1)/2,所以最終時間複雜度仍為o(n)。

顯然,當n較大時,順序查詢演算法效率將極為低下,不過優點是演算法簡單,對於一些小型資料還是適用的,實際開發中,我們也通常將一些常用的記錄放在順序表前面,不常使用的放在表後面,以此來提高查詢效率。

順序表查詢

一 查詢概論 1 查詢表 查詢表是由同一型別的資料元素或記錄構成的集合。2 關鍵字 關鍵字是資料元素中某個資料項的值,又稱為鍵值,用它可以標識乙個資料元素。也可以標識乙個記錄的某個資料項 字段 稱為關鍵碼。若此關鍵字可以唯一標識乙個記錄,則稱此關鍵字為主關鍵字,所以對於不同的記錄,其主關鍵字是不相同...

順序表查詢

順序查詢 sequential search 又叫線性查詢,是最基本的查詢技術,它的查詢過程是 從表中第乙個 或最後乙個 記錄開始,逐個進行記錄的關鍵字和給定值比較,若某個記錄的關鍵字和給定值相等,則查詢成功,找到所查的記錄 如果直到最後乙個 或第乙個 記錄,其關鍵字和給定值比較都不等時,則表中沒有...

順序表的順序查詢和折半查詢

順序查詢 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...