general 
Top Ten Algorithms of the Century AlKhwarizmi Author's Web Sites: Donald E. Knuth, Stanford
Numbered Manuscripts by Edsger W. Dijkstra David Gries Robert Sedgewick, Princeton University, researcher in analysis of algorithms 

ACM Collected Algorithms from Transactions on Mathematical Software  Nearly 40 years of ACM publications on mathematical
algorithms.
ASCII Format: 

Arithmetic Algorithms 
A Calculated Look at FixedPoint Arithmetic 

Artificial Intelligence  AI Resources www.aaai.org/Resources/resources.html Dr. Dobb's AI page Articial Intelligence and Game Programming


Bit Manipulation  A Generic API Bit Manipulation in C www.embedded.com/1999/9907/9907feat2.htm 

Books  Handbook of Algorithms and Data Structures www.dcc.uchile.cl/~rbaeza/handbook/hbook.html Algorithms
and Data Structures in C++


Branch and Bound  www.cs.sandia.gov/opt/survey/branchandbound.html  
BSP  Binary Space Partition Trees www.cs.wpi.edu/~matt/courses/cs563/talks/bsp/bsp.html 

Caching  Article by Jon Bentley in April 2000, Dr. Dobb's Journal, p. 111116. Source Code.  
Card shuffling  Card shuffling is an example of putting a fixed number of items into completely random order. Timothy examines a couple of randomizing algorithms  one that does not generate all permutations with equal probability, and another that does. Dr. Dobb's Journal, January 2000, pp. 113114. aa120.txt (listings) and aa120.zip (source code).  
Circle  Minimum Bounding Circle www.inf.ethz.ch/personal/gaertner/miniball.html 

Classification and Clustering Algorithms  Boris Mirkin's Homepage (author of
"Mathematical Classification and Clustering") www.dcs.bbk.ac.uk/~mirkin/academic.html 

Color Algorithms  efg's Color Reference Library 

CRCs  The CRC Pitstop is a repository for information on CRC and other checking algorithms. Take a look at the paper A Painless Guide to CRC Error Detection Algorithms. efg's CRC Lab Report has many links about CRCs 

Data Compression  Dr. Dobb's Data Compression page  
Data Structures  The Complete Collection of Algorithm
Animations: Data Structures www.cs.hope.edu/~alganim/ccaa/data.html 

Digital Signal Processing  The Scientist
and Engineer's Guide to Digital Signal Processing www.dspguide.com Spectra: Digital Signal
Processing With or Without a DSP See Fourier Analysis on efg's Math page 

Discrete Cosine Transform  Implementing Fast DCTs. Dr. Dobb's Journal, March 1999, pp. 115119. The Discrete Cosine Transform (DCT) is a crucial part of modern image and sound compression. Tim discusses several fast algorithms for computing the 8point DCT and IDCT. Additional resources include aa399.txt (listings) and aa399.zip (source code). www.ddj.com/articles/1999/9903/9903toc.htm  
Discrete Optimization Methods  Set Cover, Set Packing, Shortest Path, Traveling Salesman
Problem, Knapsack Problem, Network Flow, Job Scheduling, Vertex Coloring, Linear
Programming, Matching, Minimum Spanning Tree www.cs.sunysb.edu/~algorith/implement/syslo/implement.shtml 

Fibonacci Heap  www.ddj.com/articles/1997/9701/9701o/9701o.htm?topic=algorithms  
Genetic Algorithms 
Genetic Algorithms Archive Digital Biology 

Genetic Programming  Genetic Algorithm Archive www.aic.nrl.navy.mil/galist Genetic
Programming The GP Tutorial Tutorial 

Geometry  Geometry Algorithms http://geometryalgorithms.com The Complete Collection of Algorithm
Animations: Geometric Computational Geometry Algorithms Library Computational Geometry Bibliographies Geometrical Transformations Introduction to Computing with Geometry Notes Computational Geometry Bibliographies 

Graph Algorithms  The Complete Collection of Algorithm
Animations: Graph www.cs.hope.edu/~alganim/ccaa/graph.html The Generic Graph Component Library: As good as it is, the C++ Standard Template Library doesn't address every problem domain. Consequently, our authors implemented the Generic Graph Component Library (GGCL) for use with sparse matrix ordering algorithms for scientific computing. Additional resources include ggcl.txt (listings) and ggcl21.zip (source code) from Dr. Dobb's Sept. 2000. 

Graphics Algorithms  efg's Graphics page  
Great Circles  Introduction to the Great Circle Navigation Formulae www.best.com/~williams/avform.htm#Intro Great Circle Navigation Formulae www.best.com/~williams/avform.htm#GCF efg's UseNet Post about computing great circle distances 

Hashing  Hash Functions and Block Ciphers http://burtleburtle.net/bob/hash/index.html Hashing Rehashed, Dr. Dobb's Journal Secure Hash Standard (SHS) and Secure Hash Algorithm (SHA1) 

Huffman  Although simple and often effective, Huffman's compression algorithm requires a lot of memory for 16bit Unicode text files, and it doesn't adapt to varying conditions within the data. Steven and Yoshua explain how they updated Huffman's classic technique. Additional resources include aa108.txt (listings) and aa108.zip (source code). Dr. Dobb's Journal, October 1998. www.ddj.com/articles/1998/9810/9810toc.htm  
Image Processing Algorithms  efg's Image Processing Algorithms Reference Library page  
Interpolation  Bilinear Interpolation Use linear interpolation along the top and bottom horizontal lines to determine z_{A} and z_{B}: z_{A} = (1 – f)•z(x_{i}, y_{j}) + f•z(x_{i+1}, y_{j}) z_{B} = (1 – f)•z(x_{i}, y_{j+1})+ f• z(x_{i+1}, y_{j+1}) Use linear interpolation along the vertical line between z_{A} and z_{B} to determine z(x,y): z(x,y) = (1 – g)•z_{A} + g•z_{B} Or, z(x,y) = (1 – f)•(1 – g)•z(x_{i}, y_{j}) + f•(1 – g)•z(x_{i+1}, y_{j}) + (1 – f)•g•z(x_{i}, y_{j+1}) + f•g•z(x_{i+1}, y_{j+1}) 

Inverse  Inverse and nth roots of large numbers http://numbers.computation.free.fr/Constants/Algorithms/inverse.html 

Koch Snowflake  efg's UseNet
Post about creating Koch snowflake efg's von Koch Curve Lab Report 

Links  www.iversonsoftware.com/tabularium/programming/algorithms/index.asp?area=w  
Mathematics  efg's Math Reference Library  
Monte Carlo 
Monte Carlo Methods: A championshiplevel bridge program 

Neural Networks  9. Simple Classifiers and Neural Networks http://cgm.cs.mcgill.ca/~godfried/teaching/prweb.html
Neural Networks for Pattern Recognition 

Newton's Method  http://numbers.computation.free.fr/Constants/Algorithms/newton.html  
Parallel  www.cs.hope.edu/~alganim/ccaa/parallel.html  
Paths  Shortest Paths http://wwwcsstudents.stanford.edu/~amitp/gameprog.html#Paths 

Point in Triangle Test  Dave Eberly's UseNet
Post: Let the points be (x0,y0,z0), (x1,y1,z1), (x2,y2,z2). Given (x,y), solve for s and t in (x,y) = (x0,y0)+s*(x1x0,y1y0)+t*(x2x0,y2y0). The point is inside the triangle if s >= 0, t >= 0, and s+t <= 1. Then choose z = (1st)*z0+s*z1+t*z2. 

Polyhedra  Polyhedra Database www.netlib.org/polyhedra/index.html 

Primes  Great Internet Prime Search www.mersenne.org/prime.htm 

Regular Expressions  Regular expressions, one of the most broadly applicable of programmer's
tools, provide a compact and expressive notation for describing patterns of text. They are
also algorithmically interesting, easy to implement, and highly useful. Brian and Rob, who
are researchers at Bell Labs and the authors of The Practice of Programming,
present a compact implementation of grep that uses regular expressions. Additional
resources include regexp.txt
(listings) and regexp.zip
(source code). April 1999, Dr. Dobb's Journal. www.ddj.com/articles/1999/9904/9904toc.htm 

Roots  Also see Square Root
Inverse and nth roots of large numbers 

Sierpinski Triangle  efg's Sierpinski Triangle Lab Report  
Searching 
Ternary Search Trees, Dr. Dobb's Journal, April 1998 

Simplex Algorithm  http://libwww.lanl.gov/numerical/bookcpdf/c104.pdf  
Sorting 
Sorting Algorithms The Fastest Sorting Algorithm, April 2000, Dr. Dobb's Journal Fast Algorithms for Sorting and Searching Strings A library of internal sorting routines Sorting and Searching Sorting and Searching Algorithms: A Cookbook QuickSort is nice, but it's usually implemented using statically allocated arrays, and
it does not take advantage of alreadysorted data. Bill's variation of the Merge Sort
addresses both of these weaknesses. Additional resources include aa699.txt (listings). June
1996, Dr. Dobb's Journal. Jon and Robert describe a new algorithm for sorting strings that combines the best of quicksort and radix sort. Additional resources include AA118.TXT (listings) and AA118.ZIP (source code). Dr. Dobb's Journal, Nov. 1998. www.ddj.com/articles/1998/9811/9811toc.htm 

Square Root  www.azillionmonkeys.com/qed/sqroot.html "Integer Square Roots" by Jack W. Crenshaw 

Stony Brook Algorithm Repository  Comprehensive collection of algorithm implementations of fundamental problems in
combinatorial algorithms. www.cs.sunysb.edu/~algorith/ Supporting material drawn from the book The Algorithm Design Manual 

Strings  Jewels of Stringology  
Symbolic Integration  Risch Structure Theorem in Risch, R (1969), "The Problem
of Integration in Finite Terms," in Transactions of the American Mathematical
Society, Vol. 139, p 167. John examines a technique for symbolic integration proposed by James Slagle over 30 years ago. In doing so, he uses CLIPS (C Language Integrated Production System), a nonprocedural language that supports system development across and among three programming paradigms  rulebased, objectoriented, and procedural. June 1997, Dr. Dobb's Journal. www.ddj.com/articles/1997/9706/9706toc.htm James R. Slagle. A heuristic program that solves symbolic integration problems in freshman calculus. Journal of the ACM, 10(4):507520, October 1963. Books: 

Traveling Salesman Problem 
Traveling Salesman Problem The
Traveling Salesman Problem: 

Trees  The Complete Collection of Algorithm
Animations: Trees www.cs.hope.edu/~alganim/ccaa/tree.html BTree databases are very efficient with
onedimensional data. Ron shows how Hilbert curves can be used to efficiently manage
multidimensional data, with no changes to the underlying database. Additional resources
include aa799.txt
(listings). July 1999, Dr. Dobb's Journal. The redblack algorithm, a twist on the classic binary search tree, uses an efficient mechanism for balancing trees. Dr. Dobb's Journal, April 1992. www.ddj.com/articles/1992/9204/9204toc.htm Ternary Search Trees, Dr. Dobb's Journal, April 1998. 
Updated  15 Jun 2009 
Since  30 May 1999 