這是我想補充的元素b樹。
感謝Steve314,讓我開始用二進制表示,
給出的是n個元素的添加,爲了。我們必須將它添加到m階B樹中。取其索引(1 ... n)並將其轉換爲基數m。這種插入的主要思想是插入當前具有最高m-radix位的數字,並將其保持在樹中添加的較小m-基數之上,儘管分割節點。
1,2,3 ..是索引,所以你實際插入他們指向的數字。
For example, order-4 tree
4 8 12 highest radix bit numbers
1,2,3 5,6,7 9,10,11 13,14,15
現在根據順序值可以是:
- 順序爲偶數 - >鍵的數目是奇數 - >值是中間(中位數)
- 順序是奇數 - >的數鍵是連 - >左位或右側位
中位數的選擇(左/右),以促進將決定中,我要插入元素的順序。這必須爲B樹修復。
我在桶中添加樹元素。首先我添加桶元素,然後按順序完成下一個桶。如果中位數已知,剷鬥可以很容易地創建,剷鬥大小爲m級。
I take left median for promotion. Choosing bucket for insertion.
| 4 | 8 | 12 |
1,2,|3 5,6,|7 9,10,|11 13,14,|15
3 2 1 Order to insert buckets.
- 對於左位選擇,我插入水桶樹從右側開始,右位選擇,我從插入左側桶。選擇left-median,我們先插入中位數,然後首先插入它的左邊的元素,然後插入桶中的其餘數字。
例
Bucket median first
12,
Add elements to left
11,12,
Then after all elements inserted it looks like,
| 12 |
|11 13,14,|
Then I choose the bucket left to it. And repeat the same process.
Median
12
8,11 13,14,
Add elements to left first
12
7,8,11 13,14,
Adding rest
8 | 12
7 9,10,|11 13,14,
Similarly keep adding all the numbers,
4 | 8 | 12
3 5,6,|7 9,10,|11 13,14,
At the end add numbers left out from buckets.
| 4 | 8 | 12 |
1,2,|3 5,6,|7 9,10,|11 13,14,|15
在這裏,我們將最高M-基數號碼,並在這個過程中我添加號碼,與緊鄰的更低M-基數位,確保最高的M-基數號碼留在上面。這裏我只有兩個級別,對於更多級別,我按照基數位的降序重複相同的過程。
最後一種情況是當其餘元素的基數相同,並且沒有小數位的數字時,只需插入它們並完成該過程即可。
我會舉三個級別的示例,但顯示時間太長。所以請嘗試與其他參數,並告訴它是否工作。
後,我認爲這個問題是沒有這麼多「我們總能避免最壞情況」不亞於「如果我事先知道的鑰匙,可以找我理想的廣告訂單?「 – templatetypedef