1. Basic Concept Introduce foundamental knowledge of algorithms 2. Sorting Searching and Selection Searching algorithm uses for indicate the position of specified item in a list. Sorting algorithm uses for arrange items of a list in an order 3. Divide-and-Conquer & Recursion Work by recursively breaking down into smaller problems of the related type, recursively do so until the problems become simple enough to solve. 4. Greedy algorithms Greedy algorithms are mainly used for solving combinatorial optimization problems. 5. Dynamic programming Algorithm for solving problems by breaking down into similar subproblems 6. Data Structures Method of storing data so that it is efficiency in insert, delete, access, etc. Longest increasing subsequence Longest common subsequence Palindrome Matrix-chain multiplication ...More Array Linked list Heap Hashes ...More 7. Graph 8. Geometry Algorithm Programming method for solving Geometry problems, such as symmetry, intersection, rotation, resize, etc. 9. Linear Programming Traversal Cycle Topological ordering Strongly connected component ...More 2D geometry 3D geometry Closest pair of points Convex hull ...More Big integer String searching Range minimum query ...More

 Arithmetic Order BigInteger Graph Geometry Others Two-dimensions geometry Three-dimensions geometry Longest increasing subsequence Longest common subsequence Knapsack problem Huffman code