# Top 10 Algorithms and Data Structures for Competitive Programming

In this post “Important top 10 algorithms and data structures for competitive coding “.

**Topics : **

**Graph algorithms****Dynamic programming****Searching and Sorting:****Number theory and Other Mathematical****Geometrical and Network Flow Algorithms****Data Structures**

The below links cover all most important algorithms and data structure topics:

- Breadth First Search (BFS)
- Depth First Search (DFS)
- Shortest Path from source to all vertices **Dijkstra**
- Shortest Path from every vertex to every other vertex **Floyd Warshall**
- Minimum Spanning tree **Prim**
- Minimum Spanning tree **Kruskal**
- Topological Sort
- Johnson’s algorithm
- Articulation Points (or Cut Vertices) in a Graph
- Bridges in a graph

- Longest Common Subsequence
- Longest Increasing Subsequence
- Edit Distance
- Minimum Partition
- Ways to Cover a Distance
- Longest Path In Matrix
- Subset Sum Problem
- Optimal Strategy for a Game
- 0-1 Knapsack Problem
- Assembly Line Scheduling

- Binary Search
- Quick Sort
- Merge Sort
- Order Statistics
- KMP algorithm
- Rabin karp
- Z’s algorithm
- Aho Corasick String Matching
- Counting Sort
- Manacher’s algorithm: Part 1, Part 2 and Part 3

All Articles on Searching, Sorting and Pattern Searching.

**Number theory and Other Mathematical**

**Prime Numbers and Prime Factorization**

- Primality Test | Set 1 (Introduction and School Method)
- Primality Test | Set 2 (Fermat Method)
- Primality Test | Set 3 (Miller–Rabin)
- Sieve of Eratosthenes
- Segmented Sieve
- Wilson’s Theorem
- Prime Factorisation
- Pollard’s rho algorithm

**Modulo Arithmetic Algorithms**

- Basic and Extended Euclidean algorithms
- Euler’s Totient Function
- Modular Exponentiation
- Modular Multiplicative Inverse
- Chinese remainder theorem Introduction
- Chinese remainder theorem and Modulo Inverse Implementation
- nCr%m and this.

**Miscellaneous:**

- Counting Inversions
- Counting Inversions using BIT
- logarithmic exponentiation
- Square root of an integer
- Heavy light Decomposition , this and this
- Matrix Rank
- Gaussian Elimination to Solve Linear Equations
- Hungarian algorithm
- Link cut
- Mo’s algorithm and this
- Factorial of a large number in C++
- Factorial of a large number in Java+
- Russian Peasant Multiplication
- Catalan Number

All Articles on Mathematical Algorithms

**Geometrical and Network Flow Algorithms**

- Convex Hull
- Graham Scan
- Line Intersection
- Interval Tree
- Matrix Exponentiation and this
- Maxflow Ford Furkerson Algo and Edmond Karp Implementation
- Min cut
- Stable Marriage Problem
- Hopcroft–Karp Algorithm for Maximum Matching
- Dinic’s algo and e-maxx

All Articles on Geometric Algorithms

- Binary Indexed Tree or Fenwick tree
- Segment Tree (RMQ, Range Sum and Lazy Propagation)
- K-D tree (See insert, minimum and delete)
- Union Find Disjoint Set (Cycle Detection and By Rank and Path Compression)
- Tries
- Suffix array (this, this and this)
- Sparse table
- Suffix automata
- Suffix automata II
- LCA and RMQ

All Articles on Advanced Data Structures.

**How to Begin?**

Please see How to begin with Competitive Programming?

**How to Practice?**

Please see https://practice.geeksforgeeks.org/

**What are top algorithms in Interview Questions?**

Top 10 algorithms in Interview Questions

**How to prepare for ACM – ICPC?**

How to prepare for ACM – ICPC?

This is an initial draft. We will soon be adding more links and algorithms to this post. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above

## Recommended Posts:

- Tips and Tricks for Competitive Programmers | Set 2 (Language to be used for Competitive Programming)
- How can one become good at Data structures and Algorithms easily?
- How can competitive programming help you get a job?
- How to begin with Competitive Programming?
- Python in Competitive Programming
- Bit Tricks for Competitive Programming
- C++ tricks for competitive programming (for C++ 11)
- How to become a master in competitive programming?
- A Better Way To Approach Competitive Programming
- Fast I/O for Competitive Programming
- Knowing the complexity in competitive programming
- Bitwise Hacks for Competitive Programming
- Competitive Programming: Conquering a given problem
- Fast I/O in Java in Competitive Programming
- Some useful C++ tricks for beginners in Competitive Programming