理论基础 —— 索引 —— 分块索引
【概述】
分塊索引既適用于靜態(tài)索引,又適用于動(dòng)態(tài)索引。
在稠密索引中,索引項(xiàng)的個(gè)數(shù)與文件記錄個(gè)數(shù)相同,空間代價(jià)很大,為減少索引項(xiàng)的個(gè)數(shù),可以對(duì)文件分塊,使分塊有序。
分塊有序,是指數(shù)據(jù)集的記錄分為若干塊,并且這些塊滿足兩個(gè)條件:
- 塊間有序:后一塊的所有記錄的關(guān)鍵字要大于前一塊的所有記錄的關(guān)鍵字
- 塊內(nèi)無序:每一塊的記錄不要求有序
在分塊索引表中進(jìn)行的查找稱為分塊查找,其分兩步進(jìn)行:
【方法】
對(duì)于分塊有序的數(shù)據(jù)集,將每塊對(duì)應(yīng)一個(gè)索引項(xiàng),其結(jié)構(gòu)分為三個(gè)部分:
- 最大關(guān)鍵碼:存儲(chǔ)每一塊的最大關(guān)鍵字,以便在下一塊中的最小關(guān)鍵字也能比這一塊的最大關(guān)鍵字大
- 塊長(zhǎng):存儲(chǔ)塊中記錄個(gè)數(shù)
- 塊首地址:指向塊首數(shù)據(jù)元素的指針
【時(shí)間復(fù)雜度分析】
設(shè) n 個(gè)記錄的文件分成 m 個(gè)塊,每個(gè)塊內(nèi)均有 t 條記錄,則:n=m*t
設(shè) Lb 為查找索引表確定關(guān)鍵碼所在塊的平均查找長(zhǎng)度,Lw 為在塊內(nèi)查找關(guān)鍵碼的平均查找長(zhǎng)度,則分塊查找的平均查找長(zhǎng)度為:ASL=Lb+Lw
若采用順序查找對(duì)索引表進(jìn)行查找,則分塊查找的平均查找長(zhǎng)度為:
根據(jù)上面的式子可以發(fā)現(xiàn),平均查找長(zhǎng)度不僅取決于數(shù)據(jù)集的總記錄數(shù) n,還和每一個(gè)塊的記錄個(gè)數(shù) t 有關(guān),最佳的情況就是分的塊數(shù) m 與塊中的記錄數(shù) t 相同,此時(shí)有:n=m*t=t*t
那么有:
可見,分塊查找的時(shí)間復(fù)雜度 O(√n) 比順序查找的 O(n) 提高不少,但與二分查找的 O(logn) 相比還是有不小的差距,因此在確定塊的過程中,由于塊間有序,所以可以采用二分、插值等方法來提高效率。
總結(jié)
以上是生活随笔為你收集整理的理论基础 —— 索引 —— 分块索引的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图论 —— 差分约束系统
- 下一篇: 取余运算(信息学奥赛一本通-T1326)