Skip to content

unobatbayar/algorithms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fundamental Algorithms for Software Engineers

As a software engineer, it's crucial to have a strong understanding of fundamental algorithms. Here's a list of essential algorithms that every software engineer should be familiar with:

Sorting Algorithms

Bubble Sort

  • Insertion Sort
  • Selection Sort
  • Merge Sort
  • Quick Sort
  • Heap Sort
  • Counting Sort
  • Radix Sort

Bucket Sort

Searching Algorithms

Linear Search

Binary Search

- Depth-First Search (DFS) - Breadth-First Search (BFS)

Graph Algorithms

  • Dijkstra's Algorithm (Shortest Path)
  • Bellman-Ford Algorithm (Shortest Path with Negative Weights)
  • Floyd-Warshall Algorithm (All Pairs Shortest Path)
  • Kruskal's Algorithm (Minimum Spanning Tree)
  • Prim's Algorithm (Minimum Spanning Tree)
  • Topological Sorting
  • Tarjan's Algorithm (Strongly Connected Components)

Tree Algorithms

  • Binary Search Tree (BST)
  • AVL Tree (Self-balancing BST)
  • Red-Black Tree (Self-balancing BST)
  • Trie (Prefix Tree)
  • Huffman Coding (Optimal Prefix Encoding)
  • Fenwick Tree (Binary Indexed Tree)

Dynamic Programming

  • Fibonacci Series
  • Knapsack Problem
  • Longest Common Subsequence (LCS)
  • Matrix Chain Multiplication
  • Edit Distance
  • Coin Change Problem

String Algorithms

  • String Matching (Naive, KMP, Rabin-Karp)
  • Longest Palindromic Substring
  • Longest Common Substring
  • String Compression (Run-length Encoding)
  • Levenshtein Distance (Edit Distance)

Numerical Algorithms

  • Euclidean Algorithm (GCD, LCM)
  • Primality Testing (Sieve of Eratosthenes)
  • Fast Exponentiation (Binary Exponentiation)
  • Newton-Raphson Method (Root Finding)
  • Monte Carlo Method (Randomized Algorithms)

Miscellaneous

  • Bit Manipulation (AND, OR, XOR, Shifts)
  • Backtracking Algorithms
  • Divide and Conquer Strategies
  • Greedy Algorithms
  • Randomized Algorithms
  • Parallel and Concurrent Algorithms

See also