CLRS 演習: 6.5-8
この操作は、 node の項目をheap からHEAP-DELETE(A,i)
削除します。n 要素の最大ヒープに間に合うように実行される の実装を提供します。i
A
HEAP-DELETE
O(lg n)
A[10]={84,22,19,21,3,10,6,5,20}
入力(インデックスは1から始まる)とA[6]=10
削除されたアルゴリズムが間違っているのだろうか。最後のノードを で置き換えると、A[6]
ヒープ プロパティに違反し、親の値が見落とされます。
このためのアルゴリズムを作成しましたが、それが正しく機能するかどうか、またはどこが間違っているかを知りたいと思いました。
HEAP-DELETE(A,i)
A[i]=A[A.heapsize]
A.heapsize-=1
while i>1 and A[parent(i)]<A[i]
swap A[i] with A[parent(i)]
i=parent(i);