对分查找的最多次数_Java数据结构与算法:多路查找树
本章思維導(dǎo)圖
二叉樹與B樹
二叉樹的問題分析二叉樹的操作效率較高,但是也存在問題, 請(qǐng)看下面的二叉樹:二叉樹需要加載到內(nèi)存的,如果二叉樹的節(jié)點(diǎn)少,沒有什么問題,但是如果二叉樹的節(jié)點(diǎn)很多(比如1億), 就存在如下問題:問題1:在構(gòu)建二叉樹時(shí),需要多次進(jìn)行i/o操作(海量數(shù)據(jù)存在數(shù)據(jù)庫或文件中),節(jié)點(diǎn)海量,構(gòu)建二叉樹時(shí),速度有影響.問題2:節(jié)點(diǎn)海量,也會(huì)造成二叉樹的高度很大,會(huì)降低操作速度.解決上述問題 ---> 多叉樹? ?多叉樹1.在二叉樹中,每個(gè)節(jié)點(diǎn)有數(shù)據(jù)項(xiàng),最多有兩個(gè)子節(jié)點(diǎn)。如果允許每個(gè)節(jié)點(diǎn)可以有更多的數(shù)據(jù)項(xiàng)和更多的子節(jié)點(diǎn),就是多叉樹(multiway tree)2.后面敘述的2-3樹,2-3-4樹就是多叉樹,多叉樹通過重新組織節(jié)點(diǎn),減少樹的高度,能對(duì)二叉樹進(jìn)行優(yōu)化。3.舉例說明(下面2-3樹就是一顆多叉樹)B樹的基本介紹B樹通過重新組織節(jié)點(diǎn),降低樹的高度,并且減少讀寫次數(shù)來提升效率。1.如圖B樹通過重新組織節(jié)點(diǎn),降低了樹的高度.2.文件系統(tǒng)及數(shù)據(jù)庫系統(tǒng)的設(shè)計(jì)者利用了磁盤預(yù)讀原理,將一個(gè)節(jié)點(diǎn)的大小設(shè)為等于一個(gè)頁(頁得大小通常為4k),這樣每個(gè)節(jié)點(diǎn)只需要一次I/O就可以完全載入.3.將樹的度M設(shè)置為1024,在600億個(gè)元素中最多只需要4次I/O操作就可以讀取到想要的元素, B樹(B+)廣泛應(yīng)用于文件存儲(chǔ)系統(tǒng)以及數(shù)據(jù)庫系統(tǒng)中.2-3樹
2-3樹基本介紹:2-3樹是最簡(jiǎn)單的B樹結(jié)構(gòu), 具有如下特點(diǎn):
2-3樹的所有葉子節(jié)點(diǎn)都在同一層.(只要是B樹都滿足這個(gè)條件)
有兩個(gè)子節(jié)點(diǎn)的節(jié)點(diǎn)叫二節(jié)點(diǎn),二節(jié)點(diǎn)要么沒有子節(jié)點(diǎn),要么有兩個(gè)子節(jié)點(diǎn).
有三個(gè)子節(jié)點(diǎn)的節(jié)點(diǎn)叫三節(jié)點(diǎn),三節(jié)點(diǎn)要么沒有子節(jié)點(diǎn),要么有三個(gè)子節(jié)點(diǎn).
2-3樹是由二節(jié)點(diǎn)和三節(jié)點(diǎn)構(gòu)成的樹。
B樹、B+樹和B*樹
B樹的介紹B-tree樹即B樹,B即Balanced,平衡的意思。有人把B-tree翻譯成B-樹,容易讓人產(chǎn)生誤解。會(huì)以為B-樹是一種樹,而B樹又是另一種樹。實(shí)際上,B-tree就是指的B樹。前面已經(jīng)介紹了2-3樹和2-3-4樹,他們就是B樹(英語:B-tree 也寫成B-樹),這里我們?cè)僮鲆粋€(gè)說明,我們?cè)趯W(xué)習(xí)Mysql時(shí),經(jīng)常聽到說某種類型的索引是基于B樹或者B+樹的,如圖:
B*樹定義了非葉子結(jié)點(diǎn)關(guān)鍵字個(gè)數(shù)至少為(2/3)*M,即塊的最低使用率為2/3,而B+樹的塊的最低使用率為B+樹的1/2。
從第1個(gè)特點(diǎn)我們可以看出,B*樹分配新結(jié)點(diǎn)的概率比B+樹要低,空間使用率更高
總結(jié)
以上是生活随笔為你收集整理的对分查找的最多次数_Java数据结构与算法:多路查找树的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python提供了方法用于读取文本文件内
- 下一篇: java美元兑换,(Java实现) 美元