/*
*all right resvered .
*檔名稱:分塊查詢.cpp
*作 者: 鄭兆涵
*查詢——索引結構和分塊查詢
*/
問題實現分塊查詢,並分析相關**
程式設計**:
//分塊查詢函式實現
#include #define maxl 100 //資料表的最大長度
#define maxi 20 //索引表的最大長度
typedef int keytype;
typedef char infotype[10];
typedef struct
nodetype;
typedef nodetype seqlist[maxl]; //順序表型別
typedef struct
idxtype;
typedef idxtype idx[maxi]; //索引表型別
學習心得:
(1)索引儲存結構:
關鍵字唯一標識乙個節點,位址是指向該關鍵字對應節點的指標,也可以是相對位址。在索引儲存結構中進行關鍵字查詢時,可以先在索引表中快速查詢(因為索引表中按關鍵字有序排列,可以採用折半查詢)到相應的關鍵字,然後通過位址找到節點表中對應的節點。線性結構採用索引儲存後,可以對節點進行隨機訪問。在進行插入、刪除運算時,由於只需要修改索引表中相關節點的儲存位址,而不必一定儲存在節點表中的節點,所以仍可以保持較高的運算效率。
索引儲存結構的缺點是:建立索引表而因此增加時間和空間的開銷。
(2)分塊查詢:
分塊查詢又稱索引順序查詢,它是一種效能介於順序查詢和折半查詢之間的查詢方法。它要求按如下的索引方式儲存線性表:將r[0..n-1]均分為b塊,前b-1塊中元素個數為s=[n/b],最後一塊即第b塊的元素個數小於等於s;每一塊中的關鍵字不一定有序,但前一塊的最大關鍵字必須小於後一塊中的最小關鍵字,即要求是「分塊有序」的;抽取各塊的最大關鍵字及起始位置構成乙個索引表idx[0..b-1],即idx[i](0≤i≤b-1)中存放著第i塊的最大關鍵字及該塊在表r中的起始位置。由於表r是分塊有序的,所以索引表示乙個遞增有序表。
分塊查詢的基本思路是:首先查詢索引表,因為索引表示有序表,故可採用折半查詢或順序查詢,以確定待查的元素在哪一塊;然後在已確定的塊中進行順序查詢(因塊內元素無序,只能用順序查詢)。
分塊查詢的主要代價是增加乙個索引表的儲存空間和延長建立索引表的時間。
索引儲存結構和分塊 索引 查詢
索引儲存結構 索引儲存結構 資料表 索引表 索引表 index blocked table 中的每一項稱為索引項,索引項的一般形式 關鍵字,位址 舉個例子 分塊查詢的基本思想 分塊查詢又稱分塊索引查詢 index blocked search 是一種介於順序查詢和二分查詢之間的查詢方法。其基本思想是...
分塊索引(查詢)
什麼叫做分塊索引?分塊索引就是對資料集進行分塊,使得分塊有序,然後再對每一塊建立乙個索引項,從而減少索引項個數。分塊查詢是折半查詢和順序查詢的一種改進方法,折半查詢雖然具有很好的效能,但其前提條件時線性表順序儲存而且按照關鍵碼排序,這一前提條件在結點樹很大且表元素動態變化時是難以滿足的。而順序查詢可...
索引順序查詢(分塊查詢)
索引順序查詢又叫分塊查詢,它是介於順序查詢和折半查詢之間的一種查詢方法。折半查詢雖然具有很好的效能,但其前提條件是線性表順序儲存而且按照關鍵字排序,這一前提條件在結點數很大且表元素動態變化時難以滿足。而順序查詢雖然可以解決表元素動態變化的要求,但查詢效率很低。如果既要保持查詢效率,又要能夠滿足表元素...