【发布时间】:2016-11-02 20:51:23
【问题描述】:
假设处理一个数组的算法是 O (log n)。这 算法最多需要 12 µs 来处理一个大小为 25 的数组。所有 条件相同,大约,最多多久 算法需要处理一个大小为 625 的数组吗?
我是否可以通过将 625/25 = 25 除以每 25 个元素所需的 12 微秒((625/25)*12 = 300 微秒)来解决这个问题,还是还有更多?例如,我是否需要使用 log2(625) + 1 计算最大比较次数并在计算中使用它?任何帮助表示赞赏。
编辑:这不是家庭作业问题。
【问题讨论】:
-
这是作业吗?
-
625 是 25 的平方。二的幂。
log(625)因此是log(25)*2。因此处理时间将加倍。 -
这个问题没有多大意义。这是对大哦符号的严重滥用。该符号用于渐近行为。仅使用此符号无法推导出算法为固定 n 所采取的步数。当然,如果是作业,他们想要的答案是 24 as log 625 / log 25 = 2 * log 25 / log 25 = 2。
-
@JonhKugelman 不是。 big-oh f(n) = O(n) 的定义表明,对于足够大的 n(即 n > N0) f(n) O(log n)。
标签: java arrays algorithm big-o