An implicit binomial queue with constant insertion time
No. 318 on SWAT 88: 1st Scandinavian workshop on algorithm theory
Introduction to algorithms
A characterization of heaps and its applications
Information and Computation
Data-structural bootstrapping and catenable deques
Data-structural bootstrapping and catenable deques
The role of lazy evaluation in amortized data structures
Proceedings of the first ACM SIGPLAN international conference on Functional programming
The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
The art of computer programming, volume 3: (2nd ed.) sorting and searching
The art of computer programming, volume 3: (2nd ed.) sorting and searching
A data structure for manipulating priority queues
Communications of the ACM
ISAAC '93 Proceedings of the 4th International Symposium on Algorithms and Computation
A General Technique for Implementation of Efficient Priority Queues
A General Technique for Implementation of Efficient Priority Queues
Purely functional data structures
Purely functional data structures
A simple implementation technique for priority search queues
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Broadcasting methods in MANETS: an overview
Network performance engineering
Making teaching of programming learning-oriented and learner-directed
Proceedings of the 11th Koli Calling International Conference on Computing Education Research
Hi-index | 0.00 |
Functional programming languages are an excellent tool for teaching algorithms and data structures. This paper explains binomial heaps, a beautiful data structure for priority queues, using the functional programming language Haskell (Peterson and Hammond, 1997). We largely follow a deductive approach: using the metaphor of a tennis tournament we show that binomial heaps arise naturally through a number of logical steps. Haskell supports the deductive style of presentation very well: new types are introduced at ease, algorithms can be expressed clearly and succinctly, and Haskell's type classes allow to capture common algorithmic patterns. The paper aims at the level of an undergraduate student who has experience in reading and writing Haskell programs, and who is familiar with the concept of a priority queue.