【发布时间】:2022-04-13 19:48:02
【问题描述】:
这是人们通常遇到的对数时间复杂度的定义:
对数运行时间
O(log n)本质上意味着运行时间与输入大小的对数成比例增长。
但在某些情况下,时间的增长似乎严格与输入大小的对数成比例。例如,考虑二分搜索。据说该算法的时间复杂度为O(log n) 。我生成了大小从 2 到 1000 的数组,并且对于每个数组,我计算了最坏情况下的迭代次数(即数组拆分)。这是结果
显然,实际的时间复杂度不是log2(n)(只有当log2(x) 是整数时,两个函数才有相同的输出x)。
所以我的问题是,为什么我们说二分搜索算法具有O(log n) 复杂度,而时间复杂度实际上是一个阶跃函数?(以@987654329 开头的推导@ 并且在一些代数操作以 x = log2(N) 结束后没有解释原因)
【问题讨论】:
标签: time-complexity binary-search