我听说有人说,由于二进制搜索将搜索所需的输入减半,因此它是log(n)算法。因为我不是来自数学背景,所以我无法将其与之联系。有人可以详细解释吗?它与对数级有关系吗?
尽管不是很复杂,但这里是一种更数学的观察方法。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(“执行二进制搜索步骤”),直到找到您的元素。