Metadata-Version: 2.4
Name: algosinpy
Version: 0.1.0
Summary: Python implementation of data structures and algorithms
Author-email: Mobarak Hose Shakil <mh.ice.iu@gmail.com>
License: MIT
Project-URL: Homepage, https://github.com/imShakil/algos-in-py
Project-URL: Issues, https://github.com/imShakil/algos-in-py/issues
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# algos-in-py

# Sorting
1. Bubble Sort [x]
2. Selection Sort [x]
3. Insertion Sort [x]
4. Quick Sort [x]
5. Merge Sort [x]
6. Heap Sort [x]
7. Counting Sort [x]
8. Radix Sort [x]
9. Bucket Sort [x]

# Searching
1. Linear Search [ ]
2. Binary Search [x]
3. Ternary Search [ ]
4. Jump Search [ ]
5. Interpolation Search [ ]
6. Exponential Search [ ]

# Data Structure
1. Array
2. Stack
3. Queue [x]
4. Linked List

# String
1. Naive Pattern Searching
2. KMP 
3. Rabin-Karp
4. Finite Automata
5. Suffix Array
6. Z Algorithm

# Mathematics

## Number Theory
1. Fibonacci Series
2. Palindrome Number
3. Prime Number
4. Finding Divisors
5. Base Conversion
6. Greatest Common Divisor (GCD) (Euclidean method)
7. Lowest Common Multiple (LCM)
8. Number of Digits of a Factorial
9. Phi Function (Euler Totient)
10. Extended Euclidean
11. Prime Factorization
12. Modular Exponentiation  

# Tree
1. Binary Tree
2. Binary Search Tree 
3. Red-black Tree
4. AVL Tree
5. Segment Tree [x]
6. Binary Index Tree [x]
7. Trie

# Graph
1. Breadth First Search (BFS) [x]
2. Depth First Search (DFS) [x]
3. Shortest Path from source to all vertices **Dijkstra**
4. Shortest Path from every vertex to every other vertex **Floyd Warshall**
5. Minimum Spanning tree **Prim**
6. Minimum Spanning tree **Kruskal**
7. Topological Sort [x]
8. Johnson’s algorithm
9. Articulation Points (or Cut Vertices) in a Graph
10. Strongly Connected Components (SCC)
11. Kosaraju’s Algorithm
12. Bellman-Ford

# Dynamic Programming
1. Recursive vs Iteration
2. Longest Increasing/Decreasing Subsequence (LIS/LDS)
3. Longest Common Subsequence (LCS)
4. Edit Distance 
5. Traveling Salesman
6. Coin Change

# Greedy Techniques
1. Maximum Sum in Subarray (1D)
2. Maximum Sum in Rectangle (2D)
