时间复杂度

大O解答的是这样的问题:当数据增长时,步数如何变化?
大O记法一般都是指最坏情况
大O记法忽略常数
大O只保留最高阶的N

懂得区分最好、平均、最坏情况,是为当前场景选择最优算法以及给现有算法调优以适应环境变化的关键。记住,虽然为最坏情况做好准备十分重要,但大部分时间我们面对的是平均情况。

常数时间 O(1)
对数时间 O(log N)
线性时间 O(N)

有序数组的查找方式:

  1. 线性查找
    线性查找的最好情况是O(1),最坏情况是O(N)
  2. 二分查找
    二分查找O(log N)

log即是对数(logarithm)
log2 8意思是:要把2乘以自身多少次,才能得到8。因为需要3次,所以等于3
log2 8可以表达为:将8不断地除以2直到1,需要多少个2

O(log N)算法的步数等于二分数据直至元素剩余1个的次数。