An algorithm is a finite list of well-defined instructions for accomplishing some task/problem, for example searching for a string in another string, sorting a set of strings or returning the highest number from an array.
There are a lot of different algorithms for accomplishing the same or different tasks and all of them have different benefits. One algorithm could do something very fast using much memory, and another can do the same thing slower using less memory.
Here comes a list of well know/used algorithms with an comment so you get the basic idea of what it does.
A List of Algorithms[]
Searching Algorithms[]
(list of string searches from Wikipedia)
Algorithm | Preprocessing time | Matching time |
Knuth-Morris-Pratt algorithm | Θ(m) | Θ(n) |
Rabin-Karp algorithm | Θ(m) | average Θ(n+m), worst Θ(n m) |
Finite state automaton based search | Θ(m |Σ|) | Θ(n) |
Boyer-Moore string search algorithm | Θ(m + |Σ|) | Ω(n/m), O(n) |
Bitap algorithm (shift-or, shift-and, Baeza-Yates-Gonnet) | Θ(m + |Σ|) | Θ(n) |
Sorting Algorithms[]
Algorithm | Description |
Binary tree sort | |
Bubble sort | A very slow algorithm for sorting a list. Other sorts are better in nearly all cases. See QuickSort (but beware: Quicksort is not a stable sorting algorithm, that is, it may change the order of items that have got the same key, while Bubble sort is stable) |
Cocktail sort | |
Comb sort | |
Gnome sort | |
Heapsort | |
In-place merge sort | |
Insertion sort | |
Introsort | |
Library sort | |
Merge sort | |
Patience sorting | |
Quicksort | |
Radix sort | |
Selection sort | |
Shaker sort | |
Shell sort | |
Smoothsort |