Não consegui encontrar essa estrutura de dados, mas não sou especialista na área.
A estrutura implementa um conjunto e é basicamente uma matriz de elementos comparáveis com um invariante. O invariante é o seguinte (definido recursivamente):
Uma matriz de comprimento 1 é uma matriz de mesclagem.
Uma matriz de comprimento 2 ^ n (para n> 0) é uma matriz de mesclagem iff:
- a primeira metade é uma matriz de mesclagem e a segunda metade está vazia ou
- a primeira matriz está cheia e classificada e a segunda metade é uma matriz de mesclagem.
Observe que, se a matriz estiver cheia, ela será classificada.
Para inserir um elemento, temos dois casos:
- Se a primeira metade não estiver cheia, insira recursivamente na primeira metade.
- Se a primeira metade estiver cheia, insira recursivamente na segunda metade.
- Após a etapa recursiva, se toda a matriz estiver cheia, mescle as metades (que são classificadas) e redimensione-a para o dobro do comprimento original.
Para encontrar um elemento, recurse nas duas metades, usando a pesquisa binária quando a matriz estiver cheia. (Isso deve ser eficiente, pois há no máximo fragmentos ascendentes).
A estrutura pode ser pensada como uma versão estática do mergesort.
Não está claro o que se deve fazer para apagar um elemento.
Edit: depois de melhorar minha compreensão da estrutura.