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.
Before even getting started implementing these algorithms, its important to know about these topics :
- Stacks
- Queues
- Linked Lists
- Tutorials Point - Singly Linked List
- Tutorials Point - Doubly Linked List
- HackerRank - Singly Linked List (video)
- Derek Banas - Singly Linked List (video)
- My Code School - Doubly Linked List introduction (video)
- Harvard CS50 - Doubly Linked List (video)
- Singly Linked List (code)
- Doubly Linked List (code)
- Binary Search Tree
- Heap / Priority Queue / Binary Heap
- Trie
- Segment trees
- Fenwick tree or Binary indexed tree(BIT)
- Disjoint data structures
- Selection
- Insertion
- Heapsort
- Quicksort
- Merge sort
- Breadth first search (BFS)
- Depth first search(DFS)
- Strongly connected components (SCC)
- Minimum spanning tree(MST)
- Topological sort
- Linear search
- Binary search
- Ternary search
- Hash Table
- Meet in the middle
- Interpolation Search
- Fibonacci Number Series
- Rod Cutting
- Knapsack
- Tower of Hanoi
- Dijkstra
- Floyd-Warshallx
- Matrix chain multiplication
- Modular arithmetic
- Fermat’s theorem
- Chinese remainder theorem(CRT)
- Euclidean method for GCD
- Logarithmic Exponentiation
- Sieve of Eratosthenes
- Euler's totient function
- Activity Selection Problem
- Huffman Coding
- Job Sequencing Problem
- Graham-Scan for convex hull
- Line sweep
- Nim game
- Grundy numbers
- Sprague-Grundy theorem.
- Knuth Morris Pratt (KMP)
- Z algorithm
- Suffix arrays/Suffix trees