要素をヒープに挿入するには、その要素を配列の最後に追加し、それが「適切な場所」にあり、ヒーププロパティ(その操作はO(logn))を満たすまで上向きに伝搬する必要があります。
ただし、たとえばCではrealloc
、新しい要素の配列のサイズを変更するために呼び出すと、配列全体をメモリ内の別の場所(最適な場合はO(n))にコピーする必要が生じる可能性があります(おそらくそうなります)。最悪の場合ですよね?
C(またはそれに関しては任意の言語)のヒープは通常、固定された事前に割り当てられたサイズで実行されますか、または動的にサイズ設定されたヒープを実行可能な選択にするのに十分なほど重要ではないコピー操作です(たとえば、迅速に維持するためのバイナリヒープ)アイテムの検索可能なリスト)?