## Algorithms

Mostly inspired by Introduction to Algorithms by Cormen, Leiserson,
Rivest (1st Ed.)

Download these into a C++ compiler such as DevC++ or GNU.

### Sorting

Conduct experiments of the standard sorting algorithms: selection,
insertion, bubble, quicksort, mergesort, heapsort, counting sort,
radix sort, qsort and STL sort. Chapters 1, 7, 8 and 9. Particular
emphasis on quicksort to beat STL sort.

sorting_experiments.cpp

### Selection

Order statistic in O(n) using partition. Chapter 10

selection.cpp
Weighted median. page 194

weighted_median.cpp

### Search

Demo that seqeuential search of random array will find a new max(min)
about ln N times.

find_max_lnN.cpp

### Dynamic programming. Chap. 16

#### Matrix chain multiplication

Dynamic programming method to find optimal matrix chain
multiplication order. Also, Catalan numbers and all parenthesizations.

Matrix chain CLR 16.1
#### Longest common subsequence

LCS Also, all subsequences. CLR 16.3

Longest common substring Also, all substrings.

### Greedy algorithms. Chap. 17

Maximal set of non-overlapping intervals.

Activity selection CLR 17.1
### Misc

Josephus permutations or generalized eeny-meeny-miny-moe CLR p.296

Other programs are in CMIS
160

Combinatorics, boolean logic, finite state automata, graph theory, recursion.