ListSearch.gif (446 bytes) Algorithms

Dr. Dobb's Journal
April 2002
Dr. Dobb's Journal
April 2001
April 2000  April 1999  April 1998
April 1997  April 1996  April 1995

Algorithms page

List of Online Algorithm Articles from DDJ

DDJapr2000.jpg (3147 bytes)

Data Structures and Algorithm Analysis in ADA
Author's Page: 

Top Ten Algorithms of the Century 


Author's Web Sites:

Donald E. Knuth, Stanford 

Electrical Engineering and Computer Science including classes such as

  • Artificial Intelligence
  • Introduction to Algorithms
  • Mathematics for Computer Science
  • Theory of Computation
  • Algorithms for Computer Animation

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 Fixed-Point Arithmetic

Artificial Intelligence AI Resources

Dr. Dobb's AI page

Articial Intelligence and Game Programming

Electrical Engineering and Computer Science
including "Artificial Intelligence" class

Bit Manipulation A Generic API Bit Manipulation in C
Books Handbook of Algorithms and Data Structures

Algorithms and Data Structures in C++
Algorithms section of Amazon

Branch and Bound
BSP Binary Space Partition Trees
Caching Article by Jon Bentley in April 2000, Dr. Dobb's Journal, p. 111-116.  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. 113-114.   aa120.txt (listings) and (source code).
Circle Minimum Bounding Circle 
Classification and Clustering Algorithms Boris Mirkin's Homepage (author of "Mathematical Classification and Clustering") 
Color Algorithms
Color Reference Library

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
Digital Signal Processing The Scientist and Engineer's Guide to Digital Signal Processing

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. 115-119.  The Discrete Cosine Transform (DCT) is a crucial part of modern image and sound compression. Tim discusses several fast algorithms for computing the 8-point DCT and IDCT. Additional resources include aa399.txt (listings) and (source code).
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
Fibonacci Heap
Genetic Algorithms

Genetic Algorithms Archive

Digital Biology

Genetic Programming Genetic Algorithm Archive

Genetic Programming

The GP Tutorial 


Geometry Geometry Algorithms 

The Complete Collection of Algorithm Animations:  Geometric

Computational Geometry Algorithms Library

Computational Geometry Bibliographies

Geometrical Transformations
[Foley96, Chapter 5, pp. 201-227]

Introduction to Computing with Geometry Notes

Computational Geometry Bibliographies

Graph Algorithms The Complete Collection of Algorithm Animations:  Graph

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 (source code) from Dr. Dobb's Sept. 2000.

Graphics Algorithms efg's Graphics page
Great Circles Introduction to the Great Circle Navigation Formulae

Great Circle Navigation Formulae

efg's UseNet Post about computing great circle distances

Hashing Hash Functions and Block Ciphers 

Hashing Rehashed, Dr. Dobb's Journal

Secure Hash Standard (SHS) and Secure Hash Algorithm (SHA-1) 

Huffman Although simple and often effective, Huffman's compression algorithm requires a lot of memory for 16-bit 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 (source code).  Dr. Dobb's Journal, October 1998.
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 zA and zB:

zA = (1 f)z(xi, yj) + fz(xi+1, yj)

zB = (1 f)z(xi, yj+1)+ f z(xi+1, yj+1)

Use linear interpolation along the vertical line between zA and zB to determine z(x,y):

z(x,y) = (1 g)zA + gzB


z(x,y) = (1 f)(1 g)z(xi, yj)  +   f(1 g)z(xi+1, yj)  +   (1 f)gz(xi, yj+1)  +  fgz(xi+1, yj+1)

Inverse Inverse and n-th roots of large numbers 
Koch Snowflake efg's UseNet Post about creating Koch snowflake
efg's von Koch Curve Lab Report
Mathematics efg's Math Reference Library
Monte Carlo

Monte Carlo Methods:  A championship-level bridge program
April 2000, Dr. Dobb's Journal

Neural Networks 9. Simple Classifiers and Neural Networks 

Neural  Networks for Pattern Recognition (book home page)

Newton's Method 
Paths Shortest 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*(x1-x0,y1-y0)+t*(x2-x0,y2-y0).  The point is inside the triangle if s >= 0, t >= 0, and s+t <= 1.  Then choose z = (1-s-t)*z0+s*z1+t*z2.
Polyhedra Polyhedra Database
Primes Great Internet Prime Search 
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 (source code).
April 1999, Dr. Dobb's
Roots Also see Square Root

Inverse and n-th roots of large numbers 

Sierpinski Triangle efg's Sierpinski Triangle Lab Report

Ternary Search Trees, Dr. Dobb's Journal, April 1998

Simplex Algorithm

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 already-sorted 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.

Square Root

"Integer Square Roots" by Jack W. Crenshaw
Embedded Systems Programming, Feb. 1998, pp. 15-32

Stony Brook Algorithm Repository Comprehensive collection of algorithm implementations of fundamental problems in combinatorial algorithms. 

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 -- rule-based, object-oriented, and procedural.  June 1997, Dr. Dobb's Journal.

James R. Slagle.  A heuristic program that solves symbolic integration problems in freshman calculus. Journal of the ACM, 10(4):507-520, October 1963.

Algorithms for computer algebra by Geddes, et al
Symbolic Integration by Manual Bronstein.

Traveling Salesman Problem

Traveling Salesman Problem

The Traveling Salesman Problem:
A Guided Tour of Combinatorial Optimization

Trees The Complete Collection of Algorithm Animations:  Trees

B-Tree databases are very efficient with one-dimensional 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 red-black algorithm, a twist on the classic binary search tree, uses an efficient mechanism for balancing trees.  Dr. Dobb's Journal, April 1992.

Ternary Search Trees, Dr. Dobb's Journal, April 1998.

Updated 15 Jun 2009
Since 30 May 1999