Мені не вдалося знайти цю структуру даних, але я не є експертом у цій галузі.
Структура реалізує набір і є в основному масивом порівнянних елементів з інваріантом. Інваріантом є наступний (визначений рекурсивно):
Масив довжиною 1 - це масив злиття.
Масив довжиною 2 ^ n (для n> 0) є iff: масив злиття:
- перша половина - це масив злиття, а друга половина порожня або
- перший масив є повноцінним і сортованим, а другий половина - масивом злиття.
Зауважте, що якщо масив заповнений, він сортується.
Щоб вставити елемент, ми маємо два випадки:
- Якщо перша половина не заповнена, вставте рекурсивно в першу половину.
- Якщо перша половина заповнена, вставляйте рекурсивно у другу половину.
- Після рекурсивного кроку, якщо весь масив заповнений, об'єднайте половинки (які відсортовані) та змініть розмір удвічі від початкової довжини.
Щоб знайти елемент, повторіть обидві половини, використовуючи двійковий пошук, коли масив заповнений. (Це повинно бути ефективним, оскільки є максимум висхідних фрагментів).
Структуру можна розглядати як статичну версію злиття.
Незрозуміло, що потрібно зробити, щоб стерти елемент.
Редагувати: після вдосконалення мого розуміння структури.