本博客所有内容均整理自《算法图解》,欢迎讨论交流~
大家学习算法时不可避免地会遇见大O表示法,一般书上会解释说这个表示法是用来表示算法复杂度的,但是具体这个表示法是什么意思呢?又怎么比较不同的大O表示数值之间的关系呢?
其实大O表示法指出了算法有多快。例如,假设列表包含n个元素,简单查找需要检查每个元素,因此需要执行n次操作,使用大O表示法,这个运行时间为O(n),单位呢?没有——大O表示法并不是以秒或小时为单位的速度。大O表示法让你能够比较操作数,指出了算法运行时间的增速。
同样是检查长度为n的序列,二分查找需要执行次操作,所以使用大O表示法表示二分查找的运行速度即为O()。
所以大O表示法的括号里表示的是算法需要执行的操作数。
这里有一点需要注意,大O表示法的操作数总是指出最糟情况下的运行时间,而不是平均情况或最佳情况。
下面以从快到慢的顺序列出了经常会遇到的5种大O运行时间:
- O(