The Algorithm Museum

Project Purpose

The aim of this project is to implement the algorithms from Introduction to Algorithms (Cormen, Leiserson, Rivest, and Stein, henceforth CLRS) in as many languages as possible, for educational purposes. The versions we implement will contain printing of intermediate results at key spots, and eventually interactive features.

What Has Been Implemented

Chapter Java Ruby Go Javascript C++ Python Clojure
TheRoleOfAlgorithms No No No No No No No
GettingStarted Yes Yes Yes No Yes Yes Yes
GrowthOfFunctions No No No No No No No
DivideAndConquer Yes Yes No No No Yes No
RandomizedAlgorithms Yes Yes No No Yes Yes No
Heapsort Yes Yes No No Yes Yes No
Quicksort Yes Yes Yes No Yes Yes No
SortingInLinearTime Yes Yes No No Yes No No
MediansAndOrderStatistics No Yes No No Yes Yes No
ElementaryDataStructures Yes No No No Yes No No
HashTables Yes Yes No No Yes Yes No
BinarySearchTrees Yes Yes No No No Yes No
RedBlackTrees Yes No No No No No No
AugmentingDataStructures No No No No No No No
DynamicProgramming Yes Yes No No No Yes Yes
GreedyAlgorithms Yes Yes Yes No No Yes No
AmortizedAnalysis No No No No No No No
BTrees No No No No No No No
FibonacciHeaps No No No No No No No
vanEmdeBoasTrees No No No No No No No
DataStructuresForDisjointSets No No No No No No No
GraphAlgorithms Yes Yes No No No Yes No
MinimumSpanningTrees No No No No No Yes No
SingleSourceShortestPaths No No No No No No No
AllPairsShortestPaths No No No No No No No
MaximumFlow No No No No No No No
MultithreadedAlgorithms Yes No No No Yes No No
MatrixOperations No No No No No No No
LinearProgramming No No No No No No No
PolynomialsAndTheFFT No No No No No No No
NumberTheoreticAlgorithms No No No No No No No
StringMatching No No No No No No No
ComputationalGeometry No No No No No No No
NPCompleteness No No No No No No No
ApproximationAlgorithms No No No No No Yes No

Coding Standards

Our coding standards.

Project Leaders

Other Contributors