償却されたログ (n) のルックアップと挿入をサポートする単純なデータ構造が存在するかどうか疑問に思っていました。(要素の削除はあまり気にしません)。
私が持っていた 1 つのアイデアは、2 つの連続したブロックに分割された 1 つの連続したメモリ ブロックにすべてを格納することでした。すべての要素が並べ替えられている S 部分と、並べ替えられていない U 部分です。
挿入を実行するには、要素を U に追加します。U のサイズが log(S のサイズ) を超える場合は、連続する配列全体を並べ替えます (S と U の両方を 1 つの連続する配列として扱います)。 sort すべてが S にあり、U は空です。
ルックアップを実行するには、S で二分探索を実行し、U のすべてを調べるだけです。
ただし、アルゴリズムの償却挿入時間を計算するのに問題があります。
最終的には、必要なプロパティを備えた合理的に単純なアルゴリズム/データ構造と、償却された時間で合理的に高速に実行されることを保証するものに感謝します。
ありがとうございました!