We are accepting all pull requests. Read More
What is an algorithm? Contributing Stickers & T-Shirts
Huge collection of All ▲lgorithms implemented in multiple languages
- What is an algorithm
 - Contributing
 - Code of Conduct
 - Stickers and T-Shirts
 - Algorithms Categories
 - Maintainers
 - License
 
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.
 
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
 
- 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
 
- 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
 
- 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
 
- Brians Brain
 - Conways Game of life
 - Elementary Cellular Automata
 - Generic Algorithm
 - Langtons Ant
 - Nobili Cellular Automata
 - Von Neoumann Cellular Automata
 
- 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
 
- Affine Cipher
 - Atbash Cipher
 - Autokey Cipher
 - Baconian Cipher
 - Caesar Cipher
 - Colummnar Cipher
 - Vigenere Cipher
 
- 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
 
- 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
 
- Birthday Paradox
 - Karger Minimum Cut Algorithm
 - Kth Smallest Element Algorithm
 - Random from Stream
 - Random Node Linked list
 - Randomized Quicksort
 - Reservoir Sampling
 - Shuffle an Array
 
- Binary Search
 - Exponential Search
 - Fibonacci Search
 - Fuzzy Search
 - Interpolation Search
 - Jump Search
 - Linear Search
 - Ternay Search
 
- 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
 
- Aho Corasick Algorithm
 - Anagram Search
 - Arithmetic on large numbers
 - Boyer Moore Algorithm
 - Finite Automata
 - Kasai Algorithm
 - Kmp Algorithm
 - Levenshteing Distance
 - Lipogram Checker
 
- Coderbyte
 - Code Chef
 - Code Eval
 - Hackerearth
 - Hackerrank
 - LeetCode
 - Project Euler
 - Rosalind
 - SPOJ
 - Top Coder`
 
- 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
 
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.