Is there a ‘design pattern’ styled listing of common/popular algorithms anywhere? Specifically, something that has a similar format along the lines of:
Algorithm Name: e.g., Quick Sort, Bubble Sort, etc.
Problem: A description of the stereotypical problem the algorithm is supposed to address
Description: Description of the solution
Implementation: Code examples of the solution
Big O Rating: Self-explanatory
Similar Algorithms: Algorithms that address the same problem in different ways, or similar problems
I really like the GoF design pattern listing style, and I think it would help me learn various algorithms better/easier if I could find a resource that was similar in terms of organization.
2
Try the Stony Brook Algorithm Repository.
Note SB repository really categorizes problems rather than algorithms.
For an example of particular algorithm description, take a look at 1.1.1 Dictionaries.
Of the fields you listed, the following are there, some under different names:
- Algorithm Name: name is provided as a section header.
- Problem
- Description: “Excerpt from The Algorithm Design Manual”
- Implementation: “Implementations”
- Similar Algorithms: “Related Problems”
Only Big O Rating is not there. For Dictionaries section, this makes perfect sense since there is no single rating that would reasonably match different implementations.
5
NIST has operated a website called DADS (Dictionary of Algorithms and Data Structures) at http://xlinux.nist.gov/dads/
This web site is hosted by the Information Technology Laboratory of the National Institute of Standards and Technology, in collaboration with the FASTAR group.
This is a dictionary of algorithms, algorithmic techniques, data structures, archetypal problems, and related definitions. Algorithms include common functions, such as Ackermann’s function. Problems include traveling salesman and Byzantine generals. Some entries have links to implementations and more information. Index pages list entries by area and by type. The two-level index has a total download 1/20 as big as this page…
We do not include algorithms particular to business data processing, communications, operating systems or distributed algorithms, programming languages, AI, graphics, or numerical analysis: it is tough enough covering “general” algorithms and data structures…
After more than a decade at NIST, this site will move to http://www.fastar.org/dads/ and be hosted by the FASTAR group…
This monstrosity might suit your needs if you can afford it. It includes basically everything you listed except for implementation. It’s a proper CS text rather than a programming one per se.