紅黑樹 PK 跳躍表 (內存佔用,查詢性能)1500萬數據查詢更新1.5萬 數據,時間都在100ms如下

跳躍表和紅黑樹都是經常使用的數據結構,兩者都能實現快速查詢

1、跳躍表結構

clipboard.png
從圖中能夠看到, 跳躍表主要由如下部分構成:git

表頭(head):負責維護跳躍表的節點指針。
跳躍表節點:保存着元素值,以及多個層。
層:保存着指向其餘元素的指針。高層的指針越過的元素數量大於等於低層的指針,爲了提升查找的效率,程序老是從高層先開始訪問,而後隨着元素值範圍的縮小,慢慢下降層次。
表尾:所有由 NULL 組成,表示跳躍表的末尾。github

跳躍表以空間換取時間,來實現快速查找

2、紅黑樹

紅黑樹是每一個節點都帶有顏色屬性的二叉查找樹,顏色爲紅色或黑色。在二叉查找樹強制通常要求之外,對於任何有效的紅黑樹咱們增長了以下的額外要求:數據結構

一、節點是紅色或黑色。
二、根是黑色。
三、全部葉子都是黑色(葉子是NIL節點)。
四、每一個紅色節點必須有兩個黑色的子節點。(從每一個葉子到根的全部路徑上不能有兩個連續的紅色節點。)
五、從任一節點到其每一個葉子的全部簡單路徑都包含相同數目的黑色節點。

clipboard.png

紅黑樹,和跳躍表性能對比

模擬實驗一千五百萬,id自增,從1到一千五百萬,查詢更新時間效率對比
clipboard.png
代碼太多,不貼代碼了,具體代碼在github裏面具體文件以下
紅黑樹代碼 https://github.com/shanlongpa...
跳躍表代碼 https://github.com/shanlongpa...性能

相關文章
相關標籤/搜索