特定のパラメータモジュールの削除のパイソンheapq真ん中

パイソン内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)

 

公開された36元の記事 ウォンの賞賛0 ビュー20000 +

おすすめ

転載: blog.csdn.net/weixin_38102912/article/details/85267321