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