No he logrado encontrar esta estructura de datos, pero no soy un experto en el campo.
La estructura implementa un conjunto y es básicamente una matriz de elementos comparables con una invariante. La invariante es la siguiente (definida recursivamente):
Una matriz de longitud 1 es una matriz de fusión.
Una matriz de longitud 2 ^ n (para n> 0) es una matriz de combinación iff:
- la primera mitad es una matriz de combinación y la segunda mitad está vacía o
- la primera matriz está llena y ordenada, y la segunda mitad es una matriz de combinación.
Tenga en cuenta que si la matriz está llena, se ordena.
Para insertar un elemento, tenemos dos casos:
- Si la primera mitad no está llena, inserte recursivamente en la primera mitad.
- Si la primera mitad está llena, inserte recursivamente en la segunda mitad.
- Después del paso recursivo, si toda la matriz está llena, combine las mitades (que están ordenadas) y cambie su tamaño al doble de su longitud original.
Para encontrar un elemento, recurse en ambas mitades, utilizando la búsqueda binaria cuando la matriz está llena. (Esto debería ser eficiente ya que hay como máximo fragmentos ascendentes).
La estructura se puede considerar como una versión estática de mergesort.
No está claro qué se debe hacer para borrar un elemento.
Editar: después de mejorar mi comprensión de la estructura.