Awesome
We are accepting all pull requests. Read More
<div align="center" id="top"> <br> <br> <br> <br> <img width="500" height="350" src="https://cdn.abranhe.com/projects/algorithms/logo.svg" alt="Algorithms Logo"> <br> <br> <br> <br> <br> <br> <p> <a href="#what-is-an-algorithm">What is an algorithm?</a> <a href="https://github.com/AllAlgorithms/algorithms/blob/master/.github/contributing.md">Contributing</a> <a href="https://www.redbubble.com/people/abranhe/works/34285088">Stickers & T-Shirts</a> </p> <p> <a href="https://twitter.com/AllAlgorithms"> <img src="https://cdn.svgporn.com/logos/twitter.svg" width="17px"> Twitter </a> <a href="https://instagram.com/AllAlgorithms"> <img src="https://www.instagram.com/static/images/ico/apple-touch-icon-152x152-precomposed.png/419a6f9c7454.png" width="17px"> Instagram </a> <a href="https://github.com/AllAlgorithms"> <img src="https://img.icons8.com/ios-glyphs/90/333333/github.png" width="18px"> Github </a> </p> <br> <p align="center"> <i>Huge collection of All ▲lgorithms implemented in multiple languages</i> </p> <br><a href="https://github.com/AllAlgorithms"><img src="https://cdn.abranhe.com/projects/algorithms/badge.svg" /></a> <a href="https://cash.me/$abranhe"><img src="https://cdn.abranhe.com/badges/cash-me.svg"></a> <a href="https://paypal.me/abranhe/10"><img src="https://cdn.abranhe.com/badges/paypal.svg"></a> <a href="https://patreon.com/abranhe"><img src="https://cdn.abranhe.com/badges/patreon.svg" /></a>
</div>See
- What is an algorithm
- Contributing
- Code of Conduct
- Stickers and T-Shirts
- Algorithms Categories
- Maintainers
- License
What is an algorithm?
Informally, an algorithm is any well-defined computational procedure that takes some value, or set of values, as input and produces some value, or set of values, as output. An algorithm is thus a sequence of computational steps that transform the input into the output.
An algorithm should have three important characteristics to be considered valid:
- It should be finite: If your algorithm never ends trying to solve the problem it was designed to solve then it is useless
- It should have well defined instructions: Each step of the algorithm has to be precisely defined; the instructions should be unambiguously specified for each case.
- It should be effective: The algorithm should solve the problem it was designed to solve. And it should be possible to demonstrate that the algorithm converges with just a paper and pencil.
Categories
Structure of The All ▲lgoritms project
- Artificial Intelligence
- Backtracking
- Bit Manipulation
- Cellular Automaton
- Ciphers
- Computational Geometry
- Cryptography
- Data Structures
- Divide and conquer
- Dynamic Programming
- Gaming Theory
- Graphs
- Greedy Algorithms
- Math
- Networking
- Numerical Analysis
- Operating system
- Randomized Algorithms
- Searches
- Selections Algorithms
- Sorting
- Strings
- Online Challenges
- Others
Artificial Intelligence
- Density-based spatial clustering of applications with noise (DBSCAN Clustering)
- Interactive Self-Organizing Data Analysis Technique yAy! (ISODATA Clustering)
- Linear Regression
- Logistic Regression
- Neutral Style Transfer
- SATisfiable (SAT)
- Travelling salesman problem (TSP)
- A* (A Star)
- Artificial Neutral Network
- Convolutional Neutral Network
- Decision Tree
- Factorization Machines
- Gaussian Mixture Model
- Gradient Boosting Trees
- Hierachical Clustering
- Image Processing
- K Nearest Neighbors
- K Means
- Minimax
- Native Bayes
- Nearest Sequence Memory
- Neutral Network
- Perceptron
- Principal Component Analysis
- Q Learing
- Random Forests
- Restricted Boltzman Machine
Backtracking
- Algorithm X
- Crossword Puzzle
- Knight Tour
- M Coloring Problem
- N Queen
- Number of ways in Maze
- Partitions of set
- Permutation of Strings
- Powerset
- Rat in maze
- Subset Sum
- Sudoku Solve
Bit Manipulation
- Addition using bits
- Bit divisor
- Byte swapper
- Convert numbers to binary
- Count set bits
- Flip bits
- Hamming distance
- Invert bit
- Lonely integer
- Magic Number
- Maximum XOR Value
- Power of 2
- Subset Generation
- Sum binary numbers
- Sum equals XOR
- Thrice unique number
- Twice unique number
- XOR Swap
Cellular Automaton
- Brians Brain
- Conways Game of life
- Elementary Cellular Automata
- Generic Algorithm
- Langtons Ant
- Nobili Cellular Automata
- Von Neoumann Cellular Automata
Computational Geometry
- 2D Line intersection
- 2D Separating Axis test
- Area of polygon
- Area of triangle
- Axis aligned bounding box collision
- Bresenham Line
- Chans Algorithm
- Cohen Sutherland Lineclip
- Distance between points
- Graham Scan
- Halfplane intersection
- Jarvis March
- Quickull
- Sphere tetrahedron intersection
- Sutherland Hodgeman clipping
Cryptography
- Affine Cipher
- Atbash Cipher
- Autokey Cipher
- Baconian Cipher
- Caesar Cipher
- Colummnar Cipher
- Vigenere Cipher
Data Structures
Divide and conquer
- Strassen Matrix Manipulation
- Closest Pair of Point
- Inversion Count
- Karatsuba Multiplication
- Maximum Contiguous subsequence sum
- Merge Sort using divide and conquer
- Quick Sort using divide and conquer
- Tournament Method to find min max
- Warnock Algorithm
- X Power Y
Dynamic Programming
Gaming Theory
Graphs
Greedy Algorithms
Math
- 2 Sum
- Add Polynomials
- Amicable Numbers
- Armstrong Numbers
- Automorphic Numbers
- Average Stream Numbers
- Babylonian Method
- Binomial Coefficient
- Catalan Number
- Check is Square
- Convolution
- Coprime Numbers
- Count Digits
- Count Trailing Zeroes
- Decoding of String
- Delannoy Number
- Derangements
- DFA Division
- Diophantine
- Divided Differences
- Euler Totient
- Exponentiation Power
- Factorial
- Fast Fourier transform
- Fast inverse (sqrt) Square Root
Networking
Numerical Analysis
Operating system
Randomized Algorithms
- Birthday Paradox
- Karger Minimum Cut Algorithm
- Kth Smallest Element Algorithm
- Random from Stream
- Random Node Linked list
- Randomized Quicksort
- Reservoir Sampling
- Shuffle an Array
Searches
- Binary Search
- Exponential Search
- Fibonacci Search
- Fuzzy Search
- Interpolation Search
- Jump Search
- Linear Search
- Ternay Search
- Jump Search
- Fibonacci Search
Selections Algorithms
Sorting
- Bead Sort
- Bogo Sort
- Bubble Sort
- Bucket Sort
- Circle Sort
- Comb Sort
- Counting Sort
- Cycle Sort
- Flash Sort
- Gnome Sort
- Heap Sort
- Insertion Sort
- Intro Sort
- Median Sort
- Merge Sort
- Pipeonhole Sort
- Quick Sort
- Radix Sort
- Selection Sort
- Shaker Sort
- Shell Sort
- Sleep Sort
- Stooge Sort
- Topological Sort
- Tree Sort
Strings
- Aho Corasick Algorithm
- Anagram Search
- Arithmetic on large numbers
- Boyer Moore Algorithm
- Finite Automata
- Kasai Algorithm
- Kmp Algorithm
- Levenshteing Distance
- Lipogram Checker
Online Challenges
- Coderbyte
- Code Chef
- Code Eval
- Hackerearth
- Hackerrank
- LeetCode
- Project Euler
- Rosalind
- SPOJ
- Top Coder`
Others
- Average
- Biggest of n numbers
- Biggest Suffix
- Fifteen Puzzle
- Jaccard Similarity
- Jose Phus Problem
- Lapindrom Checker
- Leap Year
- Magic Square
- Majority Element
- Minimum subarray size with degree
- No operator addition
- Paint fill
- Split list
- Tokenizer
- Unique number
License
This work is released under MIT License.
To the extent possible under law, Abraham Hernandez (@abranhe) has waived all copyright and related or neighboring rights to this work.
<div align="center"> <a href="https://github.com/abranhe/algorithms"> <img src="https://cdn.abranhe.com/projects/algorithms/logo.svg" width="50px"> </a> <br> </div>