\part{Fundamentals}
As mathematical as possible
Will use C++ to describe algorithms

Data structures on a Turing machine

To consider the computational complexity of algorithms working on an ADT, one would have to assume hypothetical asymptotic classes for the ADT's operations (you could theoretically give operations an asymptotic class  that is impossible to actually implement on your model of computation, so take care!)


Here we will consider algorithms working on ADTS (this excludes numerical methods, simplex algorithm etc.)
\chapter{Basics}
Euclidean algorithm
\chapter{Sorting}
Bogosort
Bubble sort
Quicksort
Radix sort
\chapter{Graph}
Alpha-Beta pruning
BFS
DFS
A*
B*
D*
SSS*
Monte Carlo tree search
Topological sort
\section{Shortest path}
Dijkstra's algorithm
Bellman-Ford algorithm
\section{Minimum spanning trree}
Borůvka's algorithm
Kruskal's algorithm
Prim's algorithm



\chapter{Combinatorial}
Floyd's cycle-finding algorithm
