1. 程式人生 > >【查詢】順序表(線性表)查詢

【查詢】順序表(線性表)查詢

最基本的查詢技術。

演算法思想

從表中第一個(最後一個)記錄開始,逐個進行記錄的關鍵字和給定值比較:

  • 若某個記錄的關鍵字和給定值相等,則查詢成功,找到所查記錄;
  • 若直到最後一個(或第一個)記錄,其關鍵字和給定值比較都不等時,則表中沒有所查的記錄,查詢不成功。

演算法實現

function Sequential_Search(a,key){
    var i;
    for(i=0;i< a.length;i++){
        if(a[i]==key){
            return i;
        }
    }
    return
n; }

優化

因為每次迴圈都要對 i 是否越界(即 i 是否小於等於 n)做判斷。
改進:
設定一個哨兵,可以解決不需要每次讓 in 作比較。

function Sequential_Search2(a,key){
    a[a.length] = key; /* 設定a[n]為關鍵字值,即“哨兵” */

    var i = 0; /* 從頭迴圈陣列 */
    while (a[i] != key) {
        i++;
    }
    return i; /* 返回 n 則說明查詢失敗 */
}

時間複雜度

O(n)