ProCookbook
ProCookbook copied to clipboard
All the Famous algorithms you need!
ProCookbook
A social exploration of the inner workings of algorithms and data structures.
Overview
ProCookbook is designed to help software engineers engage with algorithms and data structure in a tangible way. It began as a curiosity, and now can be a library of known algorithms.
What this is intended to be
- A python package wrapping up C++ implementations of algorithms.
- A place for you to contribute new algorithms and learn with others.
What this isn't
- A replacement for python's standard libraries.
- A place to copy/paste from TheAlgorithms project.
How to Get Involved
If you would like to help with wrapping the project using the Python-C API, join the discussion on this issue.
List of Algorithms
- Sorting
-
Graph/Tree
- Not Catagorized
- Number Theory
- Data Structures
- Resources
- Useful Sites
-
Courses
- Introduction courses
- Advance Courses
- Wish List
- Data Structures
- Algorithms
Sorting
The following is a resource for various sorting techniques with their execution time.
1. Bubble Sort [Execution time : 199.22 seconds ]
2. Selection Sort [Execution time : 75.192 seconds ]
3. Insertion Sort [Execution time : 52.833 seconds ]
4. Shell Sort [Execution time : 15.703 seconds ]
5. Merge Sort [Execution time : 0.86 seconds ]
6. Quick Sort (without shuffling) [Execution time : 0.817 seconds ]
7. Count Sort [Execution time : 0.645 seconds ]
Graph/Tree
Tree is special form of graph i.e. minimally connected graph and having only one path between any two vertices. In graph there can be more than one path i.e. graph can have uni-directional or bi-directional paths (edges) between nodes.
- Graph API
- Depth first search
- Breadth first search
- Dijkstra's Algorithm
- Floyd-Warshall's Algorithm
- Lowest common Ancestor
- Heavy Light Decomposition (create and query only)
Not Catagorized
- Merge Sort (Incomplete trying inplace mergesort) | READ
Number Theory
-
GCD | wiki | Euclidean Algorithm | Extended Euclidean
-
Karatsuba's multiplication
-
Miller-Rabin Test for prime numbers
-
Euler's totient function
Data Structures
- Stack
- Trie
- Union Find | Tutorial
- Fenwick Tree Tutorial
- Linked List (Add more features)
- Interval Trees
Resources
Useful Sites
- VisuAlgo
- HackerRank
- Codeforces
- CodeChef
- TopCoder
- e-maxx - for Russian readers
- e-maxx - for English readers
Courses
Introduction courses
- MIT 6.006 Introduction to Algorithms, Fall 2011
- MIT 6.046J Design and Analysis of Algorithms, Spring 2015
Advance Courses
- Advanced Algorithms (COMPSCI 224), Harvard University
- MIT 6.851 Advanced Data Structures, Spring 2012
Wish List
Data Structures
- Queues
- Binary Search Tree (All variants)
-
Linked Lists - Maps
- Priority Queue
-
Tries - Bag
- Segment Tree
-
Fenwick Tree - HLD on Trees
- Stacks
- Skip Lists
-
Interval trees
Algorithms
- Knuth-Morris-Pratt Algorihm(KMP) | Wiki | Tutorial | Example
- Rabin-Karp Algorithm | Wiki | Tutorial | Example
- Dijkstra's Algorithm(shortest Path) | Wiki | Tutorial
- Floyd Warshall Algorithm Wiki | Tutorial
- Sparse Table(RMQ)
- Lowest Common Ancestor Wiki | Tutorial
- Modular Exponentiation Wiki | Tutorial
- Counting inversion Wiki | Tutorial
- Euclid's Extended Algorithm Wiki | Tutorial
- Knapsack problem Wiki | Tutorial
- Aho-Corasick String Matching Algorithm Wiki | Tutorial
- Strongly connected Components Wiki | Tutorial
- Union-Find Wiki | Tutorial
- Bellman Ford Algorithm Wiki | Tutorial
- Convex Hull Wiki | Tutorial
- K-d tree Wiki | Tutorial
- Manacher's Algorithm Wiki | Tutorial
- Sweep Line Algorithm Wiki | Tutorial
- Stable Marriage Problem Wiki | Tutorial
- Detecting Cycles in a Graph Wiki | Tutorial
- Backtracking Wiki | Tutorial
- Graph Coloring Wiki | Tutorial
- Johnson's Alogrithm Wiki | Tutorial
- Link Cut tree Wiki | Tutorial | Video
- Burnside Lemma Wiki | Tutorial
- Mo's Algorithm Wiki | Tutorial
- Minimum Spanning Tree Wiki | Tutorial
- FFT Wiki | Tutorial
- Towers of hanoi Wiki | Tutorial
- Heavy Light Decomposition Wiki | Tutorial
- Suffix Tree Automation(Pattern Searching) Wiki | Tutorial
- Binary Indexed Tree Wiki | Tutorial
- Z Algorithm Wiki | Tutorial
- Line Intersection Algorithm Wiki | Tutorial
- Topological Sorting Wiki | Tutorial
- Binary Search Wiki | Tutorial
- Hash Function Wiki | Tutorial
- Segment Trees(Lazy Propagation) Wiki | Tutorial
- Vertex Cover Problem Wiki | Tutorial
- Interval Tree Wiki | Tutorial
- Hungarian Algorithm Wiki | Tutorial
- Matrix Exponentiation Wiki | Tutorial
- Gaussian Elimination Wiki | Tutorial
- Pollard Rho Integer Factorisation Wiki | Tutorial
- Eulerian and Hamiltonian Path Wiki | Wiki2 | Tutorial
- Blossom/Edmond's Algorithm Wiki | Tutorial
- Meet in the middle Wiki | Tutorial
- Constructive Algorithm Wiki