主要还是从算法所占用的「时间」和「空间」两个维度去考量。
时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。
空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。
二分查找分析:
二分查找每次排除掉一半的不适合值,所以对于N个元素的情况:
一次二分剩下:N/2
两次二分剩下:N/2/2 = n/4
三次二分查找剩下:N/2/2/2 = N/8
.....
M次二分剩下:n / (2^M)
在最坏情况下是在排除到只剩下最后一个值之后得到结果,即
N / (2^m) = 1
所以由上式可得:2^m = N
推出时间复杂度是以2为底的对数公式:
m = log2(N)
注意:m为查找次数, N为元素个数.
例如:求0-10000个元素中最多几次查找到73?
m = log2(10000)
m = 13次
来源:CSDN
作者:慢慢的燃烧
链接:https://blog.csdn.net/u010164190/article/details/104049014