Tak dodałem elementy do drzewa b-tree.
Dzięki Steve314, za danie mi start z reprezentacji binarnej
Podano n elementów do dodania, w kolejności. Musimy dodać go do m-porządku b-drzewa. Weź indeksy (1 ... n) i przekonwertuj je na wysokość m. Główną ideą tego wstawienia jest wstawienie numeru z najwyższym bitem m-radix obecnie i utrzymanie go powyżej numerów mniejszych m-radix dodanych w drzewie mimo podziału węzłów.
1,2,3 .. są indeksami, więc faktycznie wstawia się numery, na które wskazują.
For example, order-4 tree
4 8 12 highest radix bit numbers
1,2,3 5,6,7 9,10,11 13,14,15
Teraz w zależności od zlecenia mediany może być:
- zamówienie jest nawet -> liczba klawiszy są nieparzyste -> mediana jest środkowy (mid mediana)
- zamówienie jest nieparzysta - liczba> z klawisze są równe -> lewa mediana lub prawa mediana
Wybór median (lewo/prawo) do awansu będzie decydował o kolejności, w jakiej powinienem wstawiać elementy. To musi być naprawione dla b-drzewa.
Dodaję elementy do drzew w wiadrach. Najpierw dodaję elementy kubełkowe, a następnie uzupełniam kolejne wiadro. Wiadra można łatwo utworzyć, jeśli znana jest mediana, rozmiar wiadra to kolejność 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.
- Na lewej mediana wybór wstawić do wiadra drzewie zaczynając od prawej strony do prawej środkowej wyboru wstawić wiadra z lewej strony. Wybierając lewy-środkowy, najpierw wstawiamy medianę, potem elementy na lewo od niej, a potem resztę liczb w wiadrze.
Przykład
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
Do połowy mediany (nawet zamówić B-drzewach) wystarczy wstawić medianę, a następnie wszystkie numery w wiadrze.
Dla prawej mediany dodaję łyżki od lewej. W przypadku elementów w pojemniku najpierw wstawiam elementy medianowe, potem prawe, a następnie lewe.
Tutaj dodajemy najwyższe numery m-pozycyjnego, aw procesie dodałem numery z natychmiastowym mniejszym kawałku m-radix, upewniając się, że największą liczbę m-Radix pobyt na szczycie. Tutaj mam tylko dwa poziomy, dla kolejnych poziomów powtarzam ten sam proces w malejącej kolejności bitów radix.
Ostatnim przypadkiem jest, gdy pozostałe elementy są tego samego radix-bit i nie ma liczb z mniejszym bitem radix, a następnie po prostu wstaw je i zakończ procedurę.
Podam przykład dla 3 poziomów, ale jest zbyt długi, aby pokazać. Więc spróbuj z innymi parametrami i powiedz, czy to działa.
myślę, że pytanie jest nie tyle „zawsze możemy uniknąć najgorszego scenariusza” jak „, jeśli wiem, że klucze z góry, mogę znaleźć idealny porządek reklamowy? " – templatetypedef