A heap is one array. The cells lie along the front of the plinth. Read them as a tree and cell 0 is the top, cells 1 and 2 are its children, 3 to 6 the next row, and so on: the children of cell i are 2i + 1 and 2i + 2, and its parent is (i − 1) / 2, rounded down. No pointers are stored. The pyramid behind is that same array, folded into rows. Switch to Array to unfold it.
One rule holds on every wire: a parent is never bigger than its children (in a min-heap). So the smallest key is always on top. A red wire is where the rule is broken for a moment. A push goes in at the end and climbs past bigger parents. A pop takes the top, moves the last key up, and lets it sink past smaller children. Each walks one path, so it is O(log n).
Heapify builds a heap from any array by sinking every parent, from the last one back to the top. Most keys sit near the bottom with little room to sink, so it is O(n). Dijkstra’s queue replays Graph Net’s shortest-path run with this heap as its priority queue.