对分查找的最多次数_Java数据结构与算法:多路查找树
生活随笔
收集整理的這篇文章主要介紹了
对分查找的最多次数_Java数据结构与算法:多路查找树
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
作者:subeiLYhttps://blog.csdn.net/m0_46153949/article/details/106742330 更多精彩:記一次由Redis分布式鎖造成的重大事故,避免以后踩坑!6 個 Spring Boot 項目夠經(jīng)典,建議收藏!數(shù)據(jù)量很大,分頁查詢很慢,推薦個優(yōu)化方案!京東把 Elasticsearch 用得真牛逼!日均5億訂單查詢完美解決!推薦一款免費開源的通用數(shù)據(jù)庫工具這么設(shè)計,Redis 10億數(shù)據(jù)量只需要100MB內(nèi)存關(guān)注公眾號,查看更多優(yōu)質(zhì)文章最近面試BAT,整理一份面試資料《Java面試BAT通關(guān)手冊》,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。獲取方式:點“在看”,關(guān)注公眾號并回復?666?領(lǐng)取,更多內(nèi)容陸續(xù)奉上。明天見(。・ω・。)ノ?
本章思維導圖
二叉樹與B樹
二叉樹的問題分析二叉樹的操作效率較高,但是也存在問題, 請看下面的二叉樹:二叉樹需要加載到內(nèi)存的,如果二叉樹的節(jié)點少,沒有什么問題,但是如果二叉樹的節(jié)點很多(比如1億), 就存在如下問題:問題1:在構(gòu)建二叉樹時,需要多次進行i/o操作(海量數(shù)據(jù)存在數(shù)據(jù)庫或文件中),節(jié)點海量,構(gòu)建二叉樹時,速度有影響.問題2:節(jié)點海量,也會造成二叉樹的高度很大,會降低操作速度.解決上述問題 ---> 多叉樹? ?多叉樹1.在二叉樹中,每個節(jié)點有數(shù)據(jù)項,最多有兩個子節(jié)點。如果允許每個節(jié)點可以有更多的數(shù)據(jù)項和更多的子節(jié)點,就是多叉樹(multiway tree)2.后面敘述的2-3樹,2-3-4樹就是多叉樹,多叉樹通過重新組織節(jié)點,減少樹的高度,能對二叉樹進行優(yōu)化。3.舉例說明(下面2-3樹就是一顆多叉樹)B樹的基本介紹B樹通過重新組織節(jié)點,降低樹的高度,并且減少讀寫次數(shù)來提升效率。1.如圖B樹通過重新組織節(jié)點,降低了樹的高度.2.文件系統(tǒng)及數(shù)據(jù)庫系統(tǒng)的設(shè)計者利用了磁盤預讀原理,將一個節(jié)點的大小設(shè)為等于一個頁(頁得大小通常為4k),這樣每個節(jié)點只需要一次I/O就可以完全載入.3.將樹的度M設(shè)置為1024,在600億個元素中最多只需要4次I/O操作就可以讀取到想要的元素, B樹(B+)廣泛應用于文件存儲系統(tǒng)以及數(shù)據(jù)庫系統(tǒng)中.2-3樹
2-3樹基本介紹:2-3樹是最簡單的B樹結(jié)構(gòu), 具有如下特點:
2-3樹的所有葉子節(jié)點都在同一層.(只要是B樹都滿足這個條件)
有兩個子節(jié)點的節(jié)點叫二節(jié)點,二節(jié)點要么沒有子節(jié)點,要么有兩個子節(jié)點.
有三個子節(jié)點的節(jié)點叫三節(jié)點,三節(jié)點要么沒有子節(jié)點,要么有三個子節(jié)點.
2-3樹是由二節(jié)點和三節(jié)點構(gòu)成的樹。
B樹、B+樹和B*樹
B樹的介紹B-tree樹即B樹,B即Balanced,平衡的意思。有人把B-tree翻譯成B-樹,容易讓人產(chǎn)生誤解。會以為B-樹是一種樹,而B樹又是另一種樹。實際上,B-tree就是指的B樹。前面已經(jīng)介紹了2-3樹和2-3-4樹,他們就是B樹(英語:B-tree 也寫成B-樹),這里我們再做一個說明,我們在學習Mysql時,經(jīng)常聽到說某種類型的索引是基于B樹或者B+樹的,如圖:
B*樹定義了非葉子結(jié)點關(guān)鍵字個數(shù)至少為(2/3)*M,即塊的最低使用率為2/3,而B+樹的塊的最低使用率為B+樹的1/2。
從第1個特點我們可以看出,B*樹分配新結(jié)點的概率比B+樹要低,空間使用率更高
總結(jié)
以上是生活随笔為你收集整理的对分查找的最多次数_Java数据结构与算法:多路查找树的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python提供了方法用于读取文本文件内
- 下一篇: oracle 怎么判断是不是第一条记录_