パイソン内heapqは、2つの方法をheappop、heappushを提供する、しかし、特定のパラメータの中央に対応する方法を提供し、削除しません。
from heapq import heappush, heappop, _siftdown, _siftup
# heap data structure, (value, key), value is used for sorting and key used for identifying
def heapdelete(heap,i):
nodeValue = heap[i];leafValue = heap[-1];
if nodeValue == leafValue:
heap.pop(-1)
elif nodeValue <= leafValue: # similar to heappop
heap[i], heap[-1] = heap[-1], heap[i]
minimumValue = heap.pop(-1)
if heap != []:
_siftup(heap, i)
else: # similar to heappush
heap[i], heap[-1] = heap[-1], heap[i]
minimumValue = heap.pop(-1)
_siftdown(heap, 0, i)