有人可以向我解释说二进制搜索时,我们说运行时间复杂度是O(log n)吗?我在Google中搜索了以下内容,



我知道在数据结构中找到搜索关键字之前我们会做一半,但是为什么我们必须将其视为log2 n?我知道ex是指数增长,所以log2 n是二进制衰减。但是我无法根据对数定义的理解来解释二进制搜索。

最佳答案

这样想:

如果您可以负担m倍的一半时间(即您可以承受与m成正比的时间),那么您可以负担多少个数组呢?

显然大小为2m的数组,对不对?

因此,如果您可以搜索大小为n = 2m的数组,则花费的时间与m成正比,并且将m求解为n看起来像这样:

n = 2m

log2(n)= log2(2m)

log2(n)=米

换句话说,对大小为n = 2m的数组执行二进制搜索所花费的时间与m成正比,或者等效地与log2(n)成正比。

关于algorithm - 为什么将二进制搜索运行时间复杂度视为log2N,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6196896/

10-13 01:16