線性表查詢

2021-06-18 15:14:16 字數 1024 閱讀 2487

查詢的基本概念:廣義地講:查詢是在具有相同型別的記錄構成的集合中找出滿足給定條件的記錄。給定的查詢條件可能是多種多樣的,為了便於討論,我們把查詢條件限制為"匹配",即在查詢關鍵碼等於給定值的記錄。

順序查詢:順序查詢又稱線性查詢,是最基本的查詢技術之一,其基本思想為:從線性表的一端向另外一端逐個將關鍵碼與給定的值比較。肉相等,則查詢成功,給出該記錄在表中的位置;若整個表檢測完任未檢測到與給定值相等的關鍵碼,則查詢失敗,給出失敗資訊。

線性表的順序查詢:介紹一種改進的演算法:設定「哨兵」。哨兵就是待查詢的值,將它放在查詢方向的「盡頭處」,免去了在查詢過程中每一次比較後都要判斷查詢位置是否越界,從而提高查詢速度。

查詢**如下:

/**

* 從陣列下標1開始存放待查集合

* 若返回0,則查詢不成功,不是0則是待查記錄在陣列中的下標

*/public int search(int r,int n,int k)

單鏈表的順序查詢技術:假設帶頭結點的單鏈表的頭指標為first,z在單鏈表中的順序查詢演算法如下

public int linksearch(int k)

if(p.data==k) return j;

else return 0;

}

折半查詢:相對於順序查詢來說,折半查詢技術的要求比較高,它要求線性表中的記錄必須按照關鍵碼有序,並且必須採用順序儲存。折半查詢技術一般只能應用於靜態查詢。

基本思想:在有序表中,取中間記錄作為比較物件,若給定值與中間記錄關鍵碼相等,則查詢成功。若給定值小於中間記錄的關鍵碼,則在中間記錄的左半區繼續查詢;若給定值大於中間記錄的關鍵碼,則在中間記錄的右半區繼續查詢。不斷重複上述過程,直到查詢成功,或所查詢的區域無記錄。

/**

* 折半查詢的非遞迴

* 從陣列下標1開始存放待查集合

*/public int bigsearch(int r,int n,int k)

}

查詢 線性表的查詢

標頭檔案 sqlistsearch.h include const int maxsize 100 順序表中最多元素個數 template struct rectype 順序表記錄型別 template struct idxtype 索引表型別 template class sqlistsearch...

查詢 基於線性表

1 順序查詢 對於乙個無序的,即關鍵字沒有排序的線性表來說,用所給的關鍵字與線性表中的所有記錄逐個進行比較,直到成功或者失敗。平均查詢長度 asl n 1 2 ii 最近最少使用法 lur 也叫作移至前端法,如果找到一條記錄就把他移至線性表的最前面,而把其他記錄後退乙個位置。顯然,這種方式使用鍊錶來...

查詢 線性表的查詢技術

查詢基本概念 列表 由同一型別的資料元素組成的集合。關鍵碼 資料元素中的某個資料項,可以標識列表中的乙個或一組資料元素。鍵值 關鍵碼的值。主關鍵碼 可以唯一地標識乙個記錄的關鍵碼。次關鍵碼 不能唯一地標識乙個記錄的關鍵碼。查詢 在具有相同型別的記錄構成的集合中找出滿足給定條件的記錄。查詢的結果 若在...