一个函数或算法的代码块花费的时间随输入增长的速率称为增长率。
假设你去买一辆小车和一辆自行车。如果你朋友刚好看到,问你在买什么,我们一般都会说:买小车。因为买小车比买自行车花费高多了。
【总花费=小车的花费+自行车的花费】
【总花费≈小车的花费(近似)】
对于上面的例子,我们用一个函数来表示买车的花费,这个函数忽略低阶指数的项(相对于高阶项,他们的对函数结果的影响很小)。下面这个例子中n4 , 2n2, 100n, 和 500 分别是某个函数对应不同输入的花费,可以把它近似到n4,因为它的增长率最高。
【n4 + 2n2 + 100n + 500n ≈ n4】
下面是一些我们在程序设计过程中经常会遇到的增长率:
Time Complexity | Name | Example |
1 | Constant | Adding an element to the front of a linked list |
log n | Logarithmic | Finding an element in a sorted array |
n | Linear | Finding an element in a unsorted array |
nlog n | Linear Logarithmic | Sorting n items by ‘Divide and Conquer’ |
n2 | Quadratic | Shortest path between 2 nodes in a graph |
n3 | Cubic | Matrix Multiplication |
2n | Exponential | The Towers of Hanoi problem |