An algorithm is fundamentally a set of rules or defined procedures that is typically designed and used to solve a specific problem or a broad set of problems.
Broadly, algorithms define process(es), sets of rules, or methodologies that are to be followed in calculations, data processing, data mining, pattern recognition, automated reasoning or other problem-solving operations. With the increasing automation of services, more and more decisions are being made by algorithms. Some general examples are risk assessments, anticipatory policing, and pattern recognition technology.
The following is a list of well-known algorithms.
Automated planning
Combinatorial algorithms
General combinatorial algorithms
Graph algorithms
Graph drawing
Network theory
Routing for graphs
Graph search
Subgraphs
Sequence algorithms
Approximate sequence matching
Selection algorithms
Sequence search
Sequence merging
Sequence permutations
Sequence combinations
Sequence alignment
Sequence sorting
- Exchange sorts
- Bubble sort: for each pair of indices, swap the items if out of order
- Cocktail shaker sort or bidirectional bubble sort, a bubble sort traversing the list alternately from front to back and back to front
- Comb sort
- Gnome sort
- OddâÂÂeven sort
- Quicksort: divide list into two, with all items on the first list coming before all items on the second list.; then sort the two lists. Often the method of choice
- Humorous or ineffective
- Bogosort: the list is randomly shuffled until it happens to be sorted
- Slowsort
- Stooge sort
- Hybrid
- Flashsort
- Introsort: begin with quicksort and switch to heapsort when the recursion depth exceeds a certain level
- Timsort: adaptative algorithm derived from merge sort and insertion sort. Used in Python 2.3 and up, and Java SE 7.
- Insertion sorts
- Cycle sort: in-place with theoretically optimal number of writes
- Insertion sort: determine where the current item belongs in the list of sorted ones, and insert it there
- Library sort
- Patience sorting
- Shell sort: an attempt to improve insertion sort
- Tree sort (binary tree sort): build binary tree, then traverse it to create sorted list
- Merge sorts
- Merge sort: sort the first and second half of the list separately, then merge the sorted lists
- Slowsort
- Strand sort
- Non-comparison sorts
- Bead sort
- Bucket sort
- Burstsort: build a compact, cache efficient burst trie and then traverse it to create sorted output
- Counting sort
- Pigeonhole sort
- Postman sort: variant of Bucket sort which takes advantage of hierarchical structure
- Radix sort: sorts strings letter by letter
- Selection sorts
- Heapsort: convert the list into a heap, keep removing the largest element from the heap and adding it to the end of the list
- Selection sort: pick the smallest of the remaining elements, add it to the end of the sorted list
- Smoothsort
- Other
- Bitonic sorter
- Pancake sorting
- Spaghetti sort
- Topological sort
- Unknown class
- Samplesort
Subsequences
Substrings
Computational mathematics
Abstract algebra
Computer algebra
Geometry
Number theoretic algorithms
Numerical algorithms
Differential equation solving
Elementary and special functions
Geometric
Interpolation and extrapolation
Linear algebra
Monte Carlo
Numerical integration
Root finding
Optimization algorithms
Hybrid Algorithms
Computational science
Astronomy
Bioinformatics
Geoscience
- Geohash: a public domain algorithm that encodes a decimal latitude/longitude pair as a hash string
- Vincenty's formulae: a fast algorithm to calculate the distance between two latitude/longitude points on an ellipsoid
Linguistics
Medicine
Physics
Statistics
Computer science
Computer architecture
- Tomasulo algorithm: allows sequential instructions that would normally be stalled due to certain dependencies to execute non-sequentially
Computer graphics
Cryptography
- Asymmetric (public key) encryption:
- ElGamal
- Elliptic curve cryptography
- MAE1
- NTRUEncrypt
- RSA
- Digital signatures (asymmetric authentication):
- DSA, and its variants:
- ECDSA and Deterministic ECDSA
- EdDSA (Ed25519)
- RSA
- Cryptographic hash functions (see also the section on message authentication codes):
- BLAKE
- MD5 â Note that there is now a method of generating collisions for MD5
- RIPEMD-160
- SHA-1 â Note that there is now a method of generating collisions for SHA-1
- SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512)
- SHA-3 (SHA3-224, SHA3-256, SHA3-384, SHA3-512, SHAKE128, SHAKE256)
- Tiger (TTH), usually used in Tiger tree hashes
- WHIRLPOOL
- Cryptographically secure pseudo-random number generators
- Blum Blum Shub â based on the hardness of factorization
- Fortuna, intended as an improvement on Yarrow algorithm
- Linear-feedback shift register (note: many LFSR-based algorithms are weak or have been broken)
- Yarrow algorithm
- Key exchange
- DiffieâÂÂHellman key exchange
- Elliptic-curve DiffieâÂÂHellman (ECDH)
- Key derivation functions, often used for password hashing and key stretching
- Argon2
- bcrypt
- PBKDF2
- scrypt
- Message authentication codes (symmetric authentication algorithms, which take a key as a parameter):
- HMAC: keyed-hash message authentication
- Poly1305
- SipHash
- Secret sharing, secret splitting, key splitting, M of N algorithms
- Blakey's scheme
- Shamir's secret sharing
- Symmetric (secret key) encryption:
- Advanced Encryption Standard (AES), winner of NIST competition, also known as Rijndael
- Blowfish
- ChaCha20 updated variant of Salsa20
- Data Encryption Standard (DES), sometimes DE Algorithm, winner of NBS selection competition, replaced by AES for most purposes
- IDEA
- RC4 (cipher)
- Salsa20
- Threefish
- Tiny Encryption Algorithm (TEA)
- Twofish
- Post-quantum cryptography
- Proof-of-work algorithms
Digital logic
Machine learning and statistical classification
Programming language theory
Parsing
Quantum algorithms
Theory of computation and automata
Information theory and signal processing
Coding theory
Error detection and correction
Lossless compression algorithms
Lossy compression algorithms
Digital signal processing
Image processing
Software engineering
Database algorithms
Distributed systems algorithms
Memory allocation and deallocation algorithms
Networking
Operating systems algorithms
Process synchronization
Scheduling
I/O scheduling
Disk scheduling
See also
References