CLRS 练习:6.5-8
该操作从堆中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);