Python Heapq


< heapq >
  • hip機能用ライブラリ
  • 複数のアルゴリズムにおいて優先キュー機能を実装する場合、
  • が使用され、複数の最短パスアルゴリズムが含まれる
  • PriorityQueueライブラリは使用可能ですが、符号化テストでは通常heapqが速いです.
    『Pythonからのヒップホップ』
  • は少なくとも臀部からなり、すべての元素を臀部に入れ、それを抜くだけでO(Nlogn)
  • を得ることができる.
  • は、通常、最小HIPデータ構造の最上位要素が常に最小であるため、
  • である.
  • heapq.heappush():hipに要素を挿入する場合
  • heapq.heapppop():臀部から元素を取り出すとき
  • # heapq로 최소힙 구현 예시
    
    import heapq
    
    def heapsort(iterable):
      h = []
      result = []
      # 모든 원소를 차례대로 힙에 삽입
      for value in iterable:
        heapq.heappush(h, value)
      # 힙에 삽입된 모든 원소를 차례대로 꺼내어 담기
      for _ in range(len(h)):
        result.append(heapq.heappop(h))
      return result
    
    result = heapsort([1, 3, 5, 7, 9, 2, 4, 6, 8, 0])
    print(result)
  • Pythonは最大のHIPを提供しないため、
  • を使用して要素のコードを一時的に変更します.
  • hipにエレメントを挿入する前に、シンボルを反転してからエレメントを取り出し、シンボル
  • を再変換する.
    # 최대힙 예시
    
    import heapq
    
    def heapsort(iterable):
      h = []
      result = []
      # 모든 원소를 차례대로 힙에 삽입
      for value in iterable:
        heapq.heappush(h, -value)
      # 힙에 삽입된 모든 원소를 차례대로 꺼내어 담기
      for _ in range(len(h)):
        result.append(-heapq.heappop(h))
      return result
    
    result = heapsort([1, 3, 5, 7, 9, 2, 4, 6, 8, 0])
    print(result)