title: built-in max heap API in Python
body: <p>Default heapq is min queue implementation and wondering if there is an option for max queue? Thanks.</p>
  
  <p>I tried the solution using _heapify_max for max heap, but how to handle dynamically push/pop element? It seems _heapify_max could only be used during initialization time.</p>
  
  <pre><code>import heapq
  
  def heapsort(iterable):
      h = []
      for value in iterable:
          heapq.heappush(h, value)
      return [heapq.heappop(h) for i in range(len(h))]
  
  if __name__ == "__main__":
  
      print heapsort([1, 3, 5, 7, 9, 2, 4, 6, 8, 0])
  </code></pre>
  
  <p>Edit, tried _heapify_max seems not working for dynamically push/pop elements. I tried both methods output the same, both output is, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].</p>
  
  <pre><code>def heapsort(iterable):
      h = []
      for value in iterable:
          heapq.heappush(h, value)
      return [heapq.heappop(h) for i in range(len(h))]
  
  def heapsort2(iterable):
      h = []
      heapq._heapify_max(h)
      for value in iterable:
          heapq.heappush(h, value)
      return [heapq.heappop(h) for i in range(len(h))]
  
  if __name__ == "__main__":
  
      print heapsort([1, 3, 5, 7, 9, 2, 4, 6, 8, 0])
      print heapsort2([1, 3, 5, 7, 9, 2, 4, 6, 8, 0])
  </code></pre>
  
  <p>Thanks in advance,
  Lin</p>