The three most important fields are:
The above diagram shows the data structure. The following invariants apply:
It is important to note the exponential growth of the limits (and thus the range that a bucket holds). In this way the logarithmic dependence of the field quantities is of value C, the maximum difference between two key values.
During initialization, empty buckets are generated and the lower bounds u {\displaystyle u} are generated (according to invariant 2); running time O ( B ) {\displaystyle O(B)} .
During insert, a new element x {\displaystyle x} is linearly moved from right to left through the buckets and the new element with k ( x ) {\displaystyle k(x)} is stored in the left bucket to that u [ i ] ≥ k ( x ) {\displaystyle u[i]\geq k(x)} ; running time O ( B ) {\displaystyle O(B)} .
For decrease-key, first the key value is decreased (checking for compliance with the invariants). Then, the b N u m {\displaystyle bNum} field is used to locate the element and it is iterated to the left, if necessary, analogously to the insert operation. The running time is O ( 1 ) {\displaystyle O(1)} (amortized).
The extract-min operation removes an element from bucket b [ 0 ] {\displaystyle b[0]} and returns it. If the bucket b [ 0 ] {\displaystyle b[0]} is not yet empty, the operation is terminated. If, however, it is empty, the next larger non-empty bucket is searched, its smallest element k {\displaystyle k} tracked and u [ 0 ] {\displaystyle u[0]} is set to k (monotonicity is required for this). Then, according to the invariants, the bucket boundaries are redefined and the elements removed b [ i ] {\displaystyle b[i]} to the newly formed buckets; running time O ( 1 ) {\displaystyle O(1)} (amortized).
If displayed, the field b N u m {\displaystyle bNum} is updated.