二分查找时间复杂度推断

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-20 13:09:34
主要还是从算法所占用的「时间」和「空间」两个维度去考量。
时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。
空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。

二分查找分析:
二分查找每次排除掉一半的不适合值,所以对于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次

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!