This is a website devoted to computer algorithms. This is written for

  • Software developers who want to write more efficient programs
  • University students who want to compete in various programming contests

Warning -- What this website is not about

Algorithm design, though important, is only one part of whole software development process. The algorithms presented in this website give efficient solutions for different individual problems. Yet, knowledge in OS, network, database, software engineering, etc, is needed to develop large scale and fully functional software. This website only covers algorithm design. To be a really good software developer, the readers should keep learning in different areas.

Having said that, good algorithms are important for efficient software. Good algorithms are particular important for competitors in programming contests.

Structure of the website

This website consists of two parts.

  • In the Notes part, we present the general algorithm design methodologies as well as algorithms for different specific problems
  • In the Programs part, we provide implementations for different algorithms.

Comments, suggestions, bug reports

For any comments, suggestions, or bug reports, please email to


© The University of Hong Kong Algorithms Library -