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
 
- Dbscan
 - Isodata
 - Linear regression
 - Logistic regression
 - Neutral style transfer
 - Boolean satisfiability problem
 - Tsp
 - A star
 - Artificial neutral network
 - Convolutional neutral network
 - Decision tree
 - Factorization machines
 - Gaussian mixtrue model
 - Gradient boostring trees
 - Hierachical clustering
 - Image processing
 - K nearest neighbors
 - K means
 - Minimax
 - Native bayes
 - Nearest sequence memory
 - Neutral network
 - Perceptron
 - Principal component analysis
 - Q learning
 - Random forest
 - 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
 
- Adding using bits
 - Bit divisor
 - Byte swapper
 - Convert numbers to binary
 - Count set bits
 - Flip bits
 - Hamming distace
 - Invert bit
 - Lonely integer
 - Magic number
 - Maximun 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
 - Quickhull
 - Sphere tetrahedron intersection
 - Sutherland-Hodgman 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 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
 - Merge sort
 - Pigeonhole 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
 - Levenshtein distance
 - Lipogram checker
 
- 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.