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