畢業複習計畫 資料結構 2 B Tree

2021-04-09 06:53:23 字數 2141 閱讀 2188

從概念性的思維來審視

, 無疑會認為

r-b樹是一種十分平衡的設計

, 既保持了查詢的優點

, 又不犧牲太多的修改效率

, 除了因為顏色屬性略佔空間外

(即使這一點也僅是在大資料量時才予考慮的

, 當然大資料量正是

b樹適用的場景

), 作為構造乙個

key查詢功能的結構的方法

, r-b

樹簡直無可挑剔

. 可惜

, 事實是

, 沒有萬能的資料結構

, 當我們的資料量過大而必須使用輔助儲存時

, 最好是另想辦法

——總不能指望靠作業系統的記憶體管理機制來"透明

"實現吧

. "透明

"的乙個隱含的貶義即"低效

".

b-tree

就是用來解決資料量大於貯存而不得不放在輔助儲存器的問題

, 演算法將讀寫主動控制起來

, 而資料結構的設計將資料分割、組織成為易於訪問的結構

. b-tree

為了減少磁碟讀寫

, 在單個節點中存放多個鍵值

, 而乙個節點的資料大小設計為輔存中儲存單元的整數倍

, 進一步優化磁碟讀寫

. 節點內鍵值按單增排序

, 每兩個鍵值間儲存指標指向子節點(子樹

), 子樹中所有鍵值的大小都在該二鍵值之間

. 這種設計的好處是

, 如果節點內儲存

1000

個鍵值,

那麼在10

億個鍵值的集合查詢

, 僅需讀取兩個

node(

兩次磁碟訪問).

關於節點大小與樹高的關係是這樣的

. b-tree

最重要的全域性屬性是

branching factor(

分支因數

?),

它定義了內結點中鍵值的數量範圍以及子節點的數量範圍

. 設此係數為t

, 則任何內節點的鍵值數

k>t-1

且k<2t-1,

子節點數為

k+1,

而樹高漸進為

logt((n+1)/2), n

為樹中全部節點數.

branching factor

的重要性表現在

, 對樹的操作(插入

/刪除

), 必須保證操作的完成不得使節點內鍵值分布超出允許的範圍

, 這一點與其他的平衡樹類似

, 都是為了保持樹結構的穩定

, 防止操作效率惡化.

b-tree

的節點鍵值數有兩個邊界

, 操作過程中就必須處理兩種可能的越界

. 分別定義了兩種操作來維持節點大小

, 分別在插入和刪除操作中使用

. 1.

插入使得節點鍵值過多

(>2t-1),

需要進行**操作

, 將插入後會造成上越界的節點一分為二

, 再按照一般的插入步驟插入到二者之一

. 2.

刪除操作可能造成節點鍵值過少

(必須進行合併等操作

, 此時情況比較複雜

, 可能還需要多次遞迴的刪除以致減少樹高.

插入的圖示

刪除的圖示(摘自introduction to algorithm)b-

tree

的一種重要用法是資料庫中的大型索引. b-

tree

最早是在一片研究大型有序索引的文章中提出的, 全名是organization and maintenance of large ordered indices, 這幾乎是當今大型關聯式資料庫中必須的. 大型資料庫中的單個索引總是很容易就能超過主存, b-

tree

的輔存優化特性正好是和這樣的嚴苛情況. 索引是大型資料庫中必須的設施, 雖然一般的平衡搜尋樹也能維護索引, 但是在磁碟訪問效能方面,  b-

tree

明顯更為優越.

資料庫服務的多發特性要求 b-

tree

能進行併發的更新和查詢, b-

tree

的動態維護相當複雜, 多沖訪問容易造成資料丟失, 只有在lock的設計被提出之後, 才使得小粒度的併發訪問得以進行並且不影響樹結構的更新

資料結構下課複習2

1 計算 calculate 指運用事先規定的規則,將一組數值變換為另一 所需的 數值的過程。一般要有乙個計算模型。2 演算法 algorithm 簡單說,就是解決問題的一種方法或過程,由一系列計算步驟構成 目的是將問題的輸入變換為輸出 即,它是乙個定義良好的計算過程,它以乙個或一組值作為輸入,並產...

資料結構複習筆記(2)

線性表是n個資料元素的有限序列。乙個資料元素可以由若干資料項組成,此時將資料元素稱為記錄,含有大量記錄的線性表稱為檔案。同一線性表中的元素必定具有相同特性 屬於同一資料物件 線性表中有多個元素時,第乙個元素有且僅有乙個直接後繼,最後乙個元素有且僅有乙個直接前驅,其他元素有且僅有乙個直接前驅和乙個直接...

資料結構知識複習 day2

之前的博文中介紹了如何使用動態陣列來實現乙個簡單的佇列,而本文中簡要介紹一下如何使用標準c來實現乙個在記憶體中物理位置不連續的鍊錶。以下分別是link.h以及link.c檔案原始碼 ifndef linked h struct node typedef struct node position ty...