Caso real
La construcción lineal
La biblioteca estándar de C++ ofrece make_heap, que construye un heap en O(n) con el algoritmo de bajar desde el último padre. Rust convierte un Vec en BinaryHeap con BinaryHeap::from, también en O(n). Las dos garantías vienen de la misma cuenta: muchos nodos abajo que bajan poco.
Para un heap de 31 valores (5 niveles llenos), compara el trabajo de las dos formas de construirlo: bajar desde el último padre, y subir cada valor al insertarlo, suponiendo que los valores llegan de mayor a menor en un min-heap y cada uno sube hasta la raíz. Cuenta intercambios.