I have been programming for about 3 years. And just I have realized I know nothing about it. You may be surprised! But believe me, I have learnt a little about data structures and algorithms. To say the very truth, they are the heart of programming. So I should learn them as many as I can.

The time doesn’t wait. But fortunately, I have time to learn till now. You may start with me too. I am making a list of data structures and algorithms so that anyone can easily know what to learn. But I have a disclaimer. Please use this list with your common sense. I am not showing any learning source here. Because, I will implement in Python3, you may use C/C++/Java. So please search on Google/Bing to get the resources. Also I may make some mistakes to categorize these things. Adjust kindly!

Data Structures Link to heading

Basic Data Structures Link to heading

  • Stack (Array & Linked List Implementation)
  • Queue (Array & Linked List Implementation)
  • Linked List (Single, Double & Circular)
  • Lists

Tree Data Structures Link to heading

  • Binary Search Tree
  • Heaps
  • Height Balanced Tree
  • K-ary Tree
  • AVL Tree
  • B Tree
  • B+ Tree
  • Indexing with Trees
  • Segment Tree
  • Fenwick Tree
  • Binary Indexed Tree (BIT)
  • Red-Black Tree
  • Splay Tree
  • Binomial Queues
  • Fibonacci Heaps
  • Leftist Heaps
  • Skew Heaps
  • Open Hash Tables (Closed Addressing)
  • Closed Hash Tables (Open Addressing)
  • Closed Hash Tables, using buckets

Uncategorized Link to heading

  • Trie
  • Disjoint-set Data Structures
  • Suffix Arrays

Algorithms Link to heading

Sorting Algorithms Link to heading

  • Bubble Sort
  • Insertion Sort
  • Selection Sort
  • Shell Sort
  • Merge Sort
  • Quick Sort
  • Heap Sort
  • Radix Sort
  • Bucket Sort
  • Counting Sort

Graph/Search Algorithms Link to heading

  • Depth First Search (DFS)
  • Breadth First Search (BFS)
  • Iterative Deepening Depth First Search (Depth Limited Search)
  • A* Search
  • Ternary Search
  • Meet in the middle
  • Strongly Connected Components (SCC)
  • Bipartite Matching
  • Kruskal Minimum Cost Spanning Tree Algorithm
  • Prim’s Minumum Cost Spanning Tree
  • Dijkstra’s Algorithm for Shortest Paths
  • Floyd-Warshall Algorithm for Shortest Paths
  • Bellman-Ford Algorithm
  • Edmonds-Karp Algorithm
  • Hungarian Algorithm
  • Sweep Line Algorithm
  • Graham scan
  • Tarjan’s Algorithm
  • Knuth-Morris-Pratt Algorithm
  • Z algorithm
  • Hill Climbing

Dynamic Programming Link to heading

  • Integer Knapsack problem
  • Matrix Chain Multiplication
  • Longest Common Subsequence
  • Rod Cutting

Greedy Algorithms Link to heading

  • Elementary cases : Fractional Knapsack Problem, Task Scheduling
  • Data Compression using Huffman Trees
  • Activity Selection

Number Theory Link to heading

  • Modular Arithmetic
  • Fermat’s Theorem
  • Chinese Remainder Theorem(CRT)
  • Euclidian Method for GCD
  • Logarithmic Exponentiation
  • Sieve of Eratosthenes
  • Euler’s Totient Function

Geometric Algorithms Link to heading

  • 2D Rotation and Scale Matrices
  • 2D Rotation and Translation Matrices
  • 2D Changing Coordinate Systems
  • 3D Rotation and Scale Matrices
  • 3D Changing Coordinate Systems

Uncategorized Link to heading

  • Recursion
  • Huffman Coding
  • Regex Algorithm (Pattern Matching and Parsing)
  • Hashing- Hash Functions
  • Monotone Chains Algorithm
  • Coordinate Compression
  • Ford–Fulkerson Method
  • Preflow-Push Algorithm
  • Dinic’s Algorithm
  • Monte Carlo method or Metropolis Algorithm
  • Krylov Subspace Iteration Method
  • Householder Matrix Decomposition
  • QR Algorithm
  • Fast Fourier Transform
  • Integer Relation Detection Algorithm
  • Fast Multipole algorithm
  • MinMax Algorithm
  • Divide and Conquer Algorithm

Not enough smart list? Please suggest me from your point of view how I can make this list smarter. Till then, have a cup of programming!