jayjoshi64 / Lets-do-DataStructure-and-Algorithm

A list of Data Structures and Algorithms, their implementations and resources to learn.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Algorithm & Data Structures

Yay! Its the first day of 2018.

I have compiled together a comprehensive list of standard Algorithm and Data Structures below. As a new year resolution, my goal will be to implement all of these using python. Furthermore, as I go deeper down the list, I will be adding links to article and video resources, that I used to understand these concepts.

Algorithmic complexity / Big-O / Asymptotic analysis

Before even getting started implementing these algorithms, its important to know about these topics :

Data Structures (basic)

Data Structures (advanced)

  • Trie
  • Segment trees
  • Fenwick tree or Binary indexed tree(BIT)
  • Disjoint data structures

Sorting Algorithms

  • Selection
  • Insertion
  • Heapsort
  • Quicksort
  • Merge sort

Graph Algorithms

  • Breadth first search (BFS)
  • Depth first search(DFS)
  • Strongly connected components (SCC)
  • Minimum spanning tree(MST)
  • Topological sort

Search Techniques

  • Linear search
  • Binary search
  • Ternary search
  • Hash Table
  • Meet in the middle
  • Interpolation Search

Dynamic programming

  • Fibonacci Number Series
  • Rod Cutting
  • Knapsack
  • Tower of Hanoi
  • Dijkstra
  • Floyd-Warshallx
  • Matrix chain multiplication

Number theory

  • Modular arithmetic
  • Fermat’s theorem
  • Chinese remainder theorem(CRT)
  • Euclidean method for GCD
  • Logarithmic Exponentiation
  • Sieve of Eratosthenes
  • Euler's totient function

Greedy Algorithm

  • Activity Selection Problem
  • Huffman Coding
  • Job Sequencing Problem

Computational geometry

  • Graham-Scan for convex hull
  • Line sweep

Game theory

  • Nim game
  • Grundy numbers
  • Sprague-Grundy theorem.

Strings

  • Knuth Morris Pratt (KMP)
  • Z algorithm
  • Suffix arrays/Suffix trees

About

A list of Data Structures and Algorithms, their implementations and resources to learn.


Languages

Language:Python 100.0%