What is an algorithm? Contributing Stickers & T-Shirts
Huge collection of All ▲lgorithms implemented in multiple languages
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
- 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
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
- 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
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
- Quickhull
- Sphere tetrahedron intersection
- Sutherland-Hodgman 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 square root
Networking
Numerical analysis
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
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
- Merge sort
- Pigeonhole 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
- Levenshtein distance
- Lipogram checker
Online challenges
No category
- 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.