win10系統Word圖示變得很大很模糊如何解決
阿新 • • 發佈:2020-06-28
查詢
查詢表: 由同一型別的資料元素(或記錄)構成的集合,可以用線性表、樹表、散列表來實現
動態查詢表: 在查詢的同時對錶做修改操作(插入、刪除)
靜態查詢表: 僅查詢
平均查詢長度(ASL)----> 衡量查詢演算法的效能:ASL = P1C1+P2C2 +....+PiCi
一、線性表的查詢
(1)順序查詢
設定監視哨的順序查詢:
int Search_Seq(SSTable ST,KeyType key)
{
ST.R[0].key=key; //哨兵
for(i=ST.length;ST.R[i].key!=key;--i) //從後往前找
return i;
}
優點:演算法簡單,對錶結構無任何要求,既適用於順序結構,也適用於鏈式結構; 無論記錄是否按關鍵字有序均可應用
缺點:平均查詢長度較大,查詢效率較低,所以當n很大時,不宜採用順序查詢
(2)析半查詢(二分查詢):不適用於資料元素經常變動的線性表
特點:必須採用順序儲存結構,而且表中元素按關鍵字有序排列
int Search(SSTable ST ,KeyType key)
{
low=1;high=ST.length;
while(low<=high)
{
mid=(low+high)/2;
if(key==ST.R[mid].key) return mid;
else if(key<ST.R[mid].key) high=mid-1;
else low=mid+1;
}
return 0; // 表中不存在待查詢元素
}
優點: 比較次數少,查詢效率高
缺點: (1)對錶結構要求高,只能用順序儲存的有序表
(2)查詢前排序,排序很費時; 為了保持有序性,對錶進行插入和刪除時,平均比較和移動表中一半元素,費時
(3)分塊查詢(索引順序查詢)
除表本身外,還需建立一個索引表:
最大關鍵字
起始地址
如果線性表既要快速查詢有經常動態變化,可採用分塊查詢
缺點: 增加一個索引表的儲存空間並對初始索引表進行排序運算
二、樹表的查詢
二叉排序樹(二叉查詢樹)
特點: (1)中序遍歷一顆二叉樹時可以得到一個結點值遞增的有序序列
(2)含有n個結點的二叉排序樹的平均查詢長度和樹的形態有關。最差:單支樹((1+n)/2);
平衡二叉樹(AVL樹)
平衡因子: 該結點左子樹和右子樹的深度之差
平衡調整規律:LL,RR,LR,RL
三、散列表的查詢
1, 直接算出位置,與資料量無關 記錄在陣列中的儲存位置P與其關鍵字key之間存在對應關係:H(key) = P 2,H函式稱為雜湊函式 優點:查詢速度極快O(1),與元素個數無關
相關術語
(1)雜湊函式:轉換函式,將關鍵字轉換為位置(下標) (2)散列表 衝突:不同的關鍵字對映到同一個雜湊地址 衝突解決:開放地址法 線性探測再雜湊 二次(平方)探測再雜湊 隨機探測再雜湊 鏈地址法:將相同雜湊地址的鏈成一個單鏈表,適合表長不定
(3)同義詞:H函式相等的關鍵字
除留餘數法:所選P要小於表長的最大質數