Nie udało mi się znaleźć tej struktury danych, ale nie jestem ekspertem w tej dziedzinie.
Struktura implementuje zestaw i jest w zasadzie szeregiem porównywalnych elementów z niezmiennikiem. Niezmiennikiem jest to (zdefiniowane rekurencyjnie):
Tablica o długości 1 jest tablicą scalającą.
Tablica o długości 2 ^ n (dla n> 0) jest tablicą scalającą iff:
- pierwsza połowa jest tablicą scalającą, a druga połowa jest pusta lub
- pierwsza tablica jest pełna i posortowana, a druga połowa to tablica scalająca.
Zauważ, że jeśli tablica jest pełna, jest sortowana.
Aby wstawić element, mamy dwa przypadki:
- Jeśli pierwsza połowa nie jest pełna, włóż rekurencyjnie do pierwszej połowy.
- Jeśli pierwsza połowa jest pełna, włóż rekurencyjnie do drugiej połowy.
- Po zakończeniu cyklu rekurencyjnego, jeśli cała tablica jest pełna, połącz połówki (które są posortowane) i zmień jej rozmiar do dwukrotności pierwotnej długości.
Aby znaleźć element, powtórz w obu połowach, używając wyszukiwania binarnego, gdy tablica jest pełna. (Powinno to być skuteczne, ponieważ istnieje najwyżej rosnących fragmentów).
Strukturę można traktować jako statyczną wersję scalania.
Nie jest jasne, co należy zrobić, aby usunąć element.
Edycja: po poprawieniu mojego zrozumienia struktury.
źródło
Odpowiedzi:
Te uwagi dotyczą podstaw.
Tablice wyprzedzające pamięć podręczną to zmutowane potomstwo drzew Bentley-Saxe i van Emde Boas na sterydach.
źródło
Jest to podobne do drzew scalonych o strukturze dziennika lub pamięci podręcznej niewiadomych tablic wyprzedzających (lub COLA).
źródło