大O表示法
大O表示法是一种特殊的表示法,它表示了一个算法到底有多快,注意并不是表示一个算法所需要的具体的时间,而是表示算法运行时间的增速,随着输入的增加,其运行时间将以什么速度增加,有点对运行时间求导数的感觉,其形式为:O(操作数),我们就是通过其中的操作数判断算法的速度。
大O表示法指出了最差的情况下的运行时间,例如:
对一个含有n个元素的数组进行简单查找(简单查找即对数组中每个元素进行检查,直到找到目标元素)最差的情况就是最后一个元素为目标元素,此时就需要进行n次操作,简单查找的运行时间O(n)就是最差情况下的运行时间。
而如果对上述数组进行二分法查找,则最多需要找log n次(讨论运行时间时log指的都是以2为底数),二分法的运行时间为O(log n)。
常见的大O运行时间
大O运行时间 | 相关算法例举 |
---|---|
O(n),也称线性时间 | 简单查找 |
O(log n),也称对数时间 | 二分查找 |
O(n*log n) | 快速排序 |
O(n²) | 选择排序 |
O(n!) | 旅行商问题 |