一尘不染

如何计算二分搜索的复杂度

algorithm

我听说有人说,由于二进制搜索将搜索所需的输入减半,因此它是log(n)算法。因为我不是来自数学背景,所以我无法将其与之联系。有人可以详细解释吗?它与对数级有关系吗?


阅读 280

收藏
2020-07-28

共1个答案

一尘不染

尽管不是很复杂,但这里是一种更数学的观察方法。IMO比非正式的更为清晰:

问题是,您可以将N除以2多少次,直到得到1?这实际上就是说,进行二进制搜索(将元素减半),直到找到它为止。用公式可以是:

1 = N / 2 x

乘以2 x:

2 x = N

现在执行日志2:

对数2(2 x)=对数2 N
x *对数2(2)=对数2 N
x * 1 =对数2 N

这意味着您可以将日志除以N次,直到将所有内容都除。这意味着您必须除以log N(“执行二进制搜索步骤”),直到找到您的元素。

2020-07-28