The implicit representation of a complete binary tree as an array, or list, seems to have been first proposed by Eytzinger [22], as a representation for pedigree family trees. The BinaryHeap data structure described here was first introduced by Williams [65].
The randomized MeldableHeap data structure described here appears to have first been proposed by Gambin and Malinowski [29]. Other meldable heap implementations exist, including leftist heaps [12,41, Section 5.3.2], binomial heaps [62], Fibonacci heaps [27], pairing heaps [26], and skew heaps [61], although none of these are as simple as the MeldableHeap structure.
Some of the above structures also support a operation in which the value stored at node is decreased to . (It is a pre-condition that .) This operation can be implemented in time in most of the above structures by removing node and adding . However, some of these structures can implement more efficiently. In particular, takes amortized time in Fibonacci heaps and amortized time in a special version of pairing heaps [20]. This more efficient operation has applications in speeding up several graph algorithms including Dijkstra's shortest path algorithm [27].
opendatastructures.org