The complexity Ladder:
In computer science, Exponential growth is the most-danger growth pattern. Algorithms which grow this way are fundamentally useless for anything except for very small input size.
Table 1 compares several algorithms in terms of their complexities.
Table 2 compares the typical running time of algorithms of distinct orders.
The growth patterns above have been tabulated in order of enhancing size. That is,
O(1) < O(log(n)) < O(n log(n)) < O(n^{2}) < O(n^{3}), ... , O(2n).
Notation
Name
Example
O(1)
Constant
Constant growth. Does
not grow as a function
of n. For example, accessing array for one element A[i]
O(log n)
Logarithmic
Binary search
O(n)
Linear
Looping over n
elements, of an array of size n (normally).
O(n log n)
Sometimes called
"linearithmic"
Merge sort
O(n2)
Quadratic
Worst time case for
insertion sort, matrix multiplication
O(nc)
Polynomial,
sometimes
O(cn)
Exponential
O(n!)
Factorial
Table 1: Comparison of several algorithms & their complexities
Array size
Logarithmic:
log2N
Linear: N
Quadratic: N2
Exponential:
2N
8
128
256
1000
100,000
3
7
10
17
64
16,384
65,536
1 million
10 billion
3.4*1038
1.15*1077
1.07*10301
........