このデータ構造を見つけることができませんでしたが、私はこの分野の専門家ではありません。
構造体はセットを実装し、基本的には不変量を持つ比較可能な要素の配列です。不変式は次のとおりです(再帰的に定義されます)。
長さ1の配列はマージ配列です。
長さが2 ^ nの配列(n> 0の場合)は、マージ配列です。
- 前半はマージ配列で、後半は空または
- 最初の配列はいっぱいでソートされており、後半はマージ配列です。
配列がいっぱいの場合、並べ替えられることに注意してください。
要素を挿入するには、2つのケースがあります。
- 前半がいっぱいでない場合は、前半に再帰的に挿入します。
- 前半がいっぱいの場合、後半に再帰的に挿入します。
- 再帰的なステップの後、配列全体がいっぱいになった場合、(ソートされた)半分をマージし、元の長さの2倍にサイズ変更します。
要素を見つけるには、配列がいっぱいになったときにバイナリ検索を使用して、両方の部分で再帰します。(昇順フラグメントが最大であるため、これは効率的です)。
この構造は、マージソートの静的バージョンと考えることができます。
要素を消去するために何をすべきかは明確ではありません。
編集:構造の理解を向上させた後。