Template:Heap Running Times
Appearance
Objective
{{Heap Running Times}} provides time complexity information for operations across different types of heaps.
Usage
{{Heap Running Times |mode = min}}
where
- mode
- optional parameter. If present and set to "max", present information for max heap; otherwise present for min heap
Examples
Here are time complexities[1] of various heap data structures. The abbreviation am. indicates that the given complexity is amortized, otherwise it is a worst-case complexity. For the meaning of "O(f)" and "Θ(f)" see Big O notation. Names of operations assume a min-heap.
Operation | find-min | delete-min | insert | decrease-key | meld | make-heap[a] |
---|---|---|---|---|---|---|
Binary[1] | Θ(1) | Θ(log n) | Θ(log n) | Θ(log n) | Θ(n) | Θ(n) |
Leftist[2] | Θ(1) | Θ(log n) | Θ(log n) | Θ(log n) | Θ(log n) | Θ(n)[b] |
Skew[3] | Θ(1) | O(log n) am. | O(log n) am. | O(log n) am. | O(log n) am. | Θ(n) am.[b] |
Binomial[1][4] | Θ(1) | Θ(log n) | Θ(1) am. | Θ(log n) | Θ(log n)[c] | Θ(n)[b] |
Skew binomial[5] | Θ(1) | Θ(log n) | Θ(1) | Θ(log n) | Θ(log n)[c] | Θ(n)[b] |
Bottom-up skew[3] | Θ(1) | O(log n) am. | Θ(1) am. | O(log n) am. | Θ(1) am. | Θ(n) am.[b] |
2–3 heap[6] | Θ(1) | O(log n) am. | Θ(1) am. | Θ(1) | O(log n)[c] | Θ(n)[b] |
Pairing[7] | Θ(1) | O(log n) am. | Θ(1) | o(log n) am.[d] | Θ(1) | Θ(n)[b] |
Rank-pairing[10] | Θ(1) | O(log n) am. | Θ(1) | Θ(1) am. | Θ(1) | Θ(n)[b] |
Fibonacci[1][11] | Θ(1) | O(log n) am. | Θ(1) | Θ(1) am. | Θ(1) | Θ(n)[b] |
Strict Fibonacci[12] | Θ(1) | O(log n) | Θ(1) | Θ(1) | Θ(1) | Θ(n)[b] |
Brodal[13][e] | Θ(1) | O(log n) | Θ(1) | Θ(1) | Θ(1) | Θ(n)[b][14] |
- ^ make-heap is the operation of building a heap from a set, or a sequence, of n elements, given in no particular order.
- ^ a b c d e f g h i j k Tarjan describes a generic way of building a heap of n elements in worst-case (respectively amortized) complexity Θ(n), for any implementation of heaps supporting meld in worst-case (respectively amortized) complexity O(log n)[3]; Tarjan had originally formulated it for leftist heaps.[2]
- ^ a b c Brodal and Okasaki describe a technique to reduce the worst-case (respectively amortized) complexity of meld to Θ(1); this technique applies to any heap datastructure that has insert in worst-case (respectively amortized) complexity Θ(1) and find-min, delete-min, meld in O(log n).
- ^ Lower bound of [8] upper bound of [9]
- ^ Brodal and Okasaki later describe a persistent variant with the same bounds except for decrease-key, which is not supported.
- ^ a b c d Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L. (1990). Introduction to Algorithms (1st ed.). MIT Press and McGraw-Hill. ISBN 0-262-03141-8.
- ^ a b Tarjan, Robert (1983). "3.3. Leftist heaps". Data Structures and Network Algorithms. pp. 38–42. doi:10.1137/1.9781611970265. ISBN 978-0-89871-187-5.
- ^ a b c Sleator, Daniel Dominic; Tarjan, Robert Endre (February 1986). "Self-Adjusting Heaps". SIAM Journal on Computing. 15 (1): 52–69. CiteSeerX 10.1.1.93.6678. doi:10.1137/0215004. ISSN 0097-5397.
- ^ "Binomial Heap | Brilliant Math & Science Wiki". brilliant.org. Retrieved 2019-09-30.
- ^ Brodal, Gerth Stølting; Okasaki, Chris (November 1996), "Optimal purely functional priority queues", Journal of Functional Programming, 6 (6): 839–857, doi:10.1017/s095679680000201x
- ^ Takaoka, Tadao (1999), Theory of 2–3 Heaps (PDF), p. 12
- ^ Iacono, John (2000), "Improved upper bounds for pairing heaps", Proc. 7th Scandinavian Workshop on Algorithm Theory (PDF), Lecture Notes in Computer Science, vol. 1851, Springer-Verlag, pp. 63–77, arXiv:1110.4428, CiteSeerX 10.1.1.748.7812, doi:10.1007/3-540-44985-X_5, ISBN 3-540-67690-2
- ^ Fredman, Michael Lawrence (July 1999). "On the Efficiency of Pairing Heaps and Related Data Structures" (PDF). Journal of the Association for Computing Machinery. 46 (4): 473–501. doi:10.1145/320211.320214.
- ^ Pettie, Seth (2005). Towards a Final Analysis of Pairing Heaps (PDF). FOCS '05 Proceedings of the 46th Annual IEEE Symposium on Foundations of Computer Science. pp. 174–183. CiteSeerX 10.1.1.549.471. doi:10.1109/SFCS.2005.75. ISBN 0-7695-2468-0.
- ^ Haeupler, Bernhard; Sen, Siddhartha; Tarjan, Robert E. (November 2011). "Rank-pairing heaps" (PDF). SIAM J. Computing. 40 (6): 1463–1485. doi:10.1137/100785351.
- ^ Fredman, Michael Lawrence; Tarjan, Robert E. (July 1987). "Fibonacci heaps and their uses in improved network optimization algorithms" (PDF). Journal of the Association for Computing Machinery. 34 (3): 596–615. CiteSeerX 10.1.1.309.8927. doi:10.1145/28869.28874.
- ^ Brodal, Gerth Stølting; Lagogiannis, George; Tarjan, Robert E. (2012). Strict Fibonacci heaps (PDF). Proceedings of the 44th symposium on Theory of Computing - STOC '12. pp. 1177–1184. CiteSeerX 10.1.1.233.1740. doi:10.1145/2213977.2214082. ISBN 978-1-4503-1245-5.
- ^ Brodal, Gerth S. (1996), "Worst-Case Efficient Priority Queues" (PDF), Proc. 7th Annual ACM-SIAM Symposium on Discrete Algorithms, pp. 52–58
- ^ Goodrich, Michael T.; Tamassia, Roberto (2004). "7.3.6. Bottom-Up Heap Construction". Data Structures and Algorithms in Java (3rd ed.). pp. 338–341. ISBN 0-471-46983-1.