バイナリの最大ヒープ (一番上に最大の要素) があり、 20 個の要素に到達するたびに最小の要素を削除して、一定のサイズ (たとえば 20 個の要素) に保つ必要があります。バイナリ ヒープは配列に格納され、ノード i の子は 2*i および 2*i+1 (i はゼロ ベース) にあります。任意の時点で、ヒープには 0 から 20 までの 'n_elements' 要素があります。たとえば、配列 [16,14,10,8,7,9,3,2,4] は有効な最大バイナリ ヒープになります。 16 には 14 と 10 の子供がいて、14 には 8 と 7 の子供がいます ...
最小の要素を見つけるには、一般に、n_elements/2 から n_elements まで配列をトラバースする必要があるようです。最小の要素が配列の最後の要素であるとは限りません。
したがって、その配列だけでは、最小のeltを見つけて削除しようとする試みは少なくともO(n)のようです。あれは正しいですか?