¿Qué es el módulo heapq de Python?

Lo intenté"heapq" y llegué a la conclusión de que mis expectativas difieren de lo que veo en la pantalla. Necesito a alguien que explique cómo funciona y dónde puede ser útil.

Del libroMódulo de Python de la semana bajo el párrafo2.2 Clasificación está escrito

Si necesita mantener una lista ordenada a medida que agrega y elimina valores, revise heapq. Al utilizar las funciones de heapq para agregar o eliminar elementos de una lista, puede mantener el orden de la lista con una sobrecarga baja.

Esto es lo que hago y obtengo.

import heapq
heap = []

for i in range(10):
    heap.append(i)

heap
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

heapq.heapify(heap)    
heapq.heappush(heap, 10)    
heap
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

heapq.heappop(heap)
0    
heap
[1, 3, 2, 7, 4, 5, 6, 10, 8, 9] <<< Why the list does not remain sorted?

heapq.heappushpop(heap, 11)
1
heap
[2, 3, 5, 7, 4, 11, 6, 10, 8, 9] <<< Why is 11 put between 4 and 6?

Entonces, cuando vea que la lista de "montones" no está ordenada en absoluto, de hecho, cuanto más agregue y elimine los elementos, más desordenados se volverán. Los valores empujados toman posiciones inexplicables. Que esta pasando?

Respuestas a la pregunta(3)

Su respuesta a la pregunta