A social exploration of the inner workings of algorithms and data structures.
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.
- A python package wrapping up C++ implementations of algorithms.
- A place for you to contribute new algorithms and learn with others.
- A replacement for python's standard libraries.
- A place to copy/paste from TheAlgorithms project.
If you would like to help with wrapping the project using the Python-C API, join the discussion on this issue.
- Sorting
- Graph/Tree
- Number Theory
- Data Structures
- Resources
- Useful Sites
- Courses
- Wish List
- Data Structures
- Algorithms
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 ]
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)
- Merge Sort (Incomplete trying inplace mergesort) | READ
-
GCD | wiki | Euclidean Algorithm | Extended Euclidean
-
Karatsuba's multiplication
-
Miller-Rabin Test for prime numbers
-
Euler's totient function
- Stack
- Trie
- Union Find | Tutorial
- Fenwick Tree Tutorial
- Linked List (Add more features)
- Interval Trees
- VisuAlgo
- HackerRank
- Codeforces
- CodeChef
- TopCoder
- e-maxx - for Russian readers
- e-maxx - for English readers
- MIT 6.006 Introduction to Algorithms, Fall 2011
- MIT 6.046J Design and Analysis of Algorithms, Spring 2015
- Advanced Algorithms (COMPSCI 224), Harvard University
- MIT 6.851 Advanced Data Structures, Spring 2012
- 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
- 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