Sorting Morphisms

  • Lex Augusteijn
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1608)


Sorting algorithms can be classified in many different ways. The way presented here is by expressing the algorithms as functional programs and to classify them by means of their recursion patterns. These patterns on their turn can be classified as the natural recursion patterns that destruct or construct a given data-type, the so called cata- and anamorphisms respectively. We show that the selection of the recursion pattern can be seen as the major design decision, in most cases leaving no more room for more decisions in the design of the sorting algorithm. It is also shown that the use of alternative data structures may lead to new sorting algorithms.

This presentation also serves as a gentle, light-weight, introduction into the various morphisms.


Binary Tree Leaf Tree Recursive Call Sorting Algorithm Recursive Structure 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Augusteijn, L.: Functional Programming, Program Transformations and Compiler Construction. PhD thesis, Eindhoven Technical University (October 1993)Google Scholar
  2. 2.
    Bird, R.S., de Moor, O.: Algebra of Programming. Prentice-Hall, Englewood Cliffs (1994)Google Scholar
  3. 3.
    Clark, K.L., Darlington, J.: Algorithm classification through synthesis. The Computer Journal 23(1), 61–65 (1980)zbMATHCrossRefMathSciNetGoogle Scholar
  4. 4.
    Fokkinga, M.M.: Law and order in algorithmics. PhD thesis, Twente University (1992)Google Scholar
  5. 5.
    Fredman, M.L., Sedgewick, R., Sleator, D.D., Tarjan, R.E.: The pairing heap: A new form of self-adjusting heap. Algorithmica 1(1), 111–129 (1986)zbMATHCrossRefMathSciNetGoogle Scholar
  6. 6.
    Hudak, P., Wadler, P., Brian, A., Fairbairn, B.J., Fasel, J., Hammond, K., Hughes, J., Johnsson, T., Kieburtz, D., Nikhil, R., Jones, S.P., Reeve, M., Wise, D., Young, J.: Report on the Programming Language Haskell, A Non-Strict, Purely Functional Language, Version 1.2. In: ACM SIGPLAN, vol. 27(5)-Section R (1992)Google Scholar
  7. 7.
    Jones, M.P., Peterson, J.C.: Hugs 1.4 User Manual, Included as part of the Hugs distribution (November 1998),
  8. 8.
    Knuth, D.E.: The Art of Computer Programming, vol. 3. Addison-Wesley, Reading (1973) (Sorting and Searching)Google Scholar
  9. 9.
    Meijer, E.: Calculating Compilers. PhD thesis, Utrecht State University, Utrecht, The Netherlands (1992)Google Scholar
  10. 10.
    Watson, B.W.: Taxonomies and Toolkits of Regular Language Algorithms. PhD thesis, Eindhoven University of Technology (1995)Google Scholar
  11. 11.
    Wirth, N.: Algorithms + Data Structures = Programs. Prentice Hall, Englewood Cliffs (1976)zbMATHGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1999

Authors and Affiliations

  • Lex Augusteijn
    • 1
  1. 1.Philips Research LaboratoriesEindhoven

Personalised recommendations