【发布时间】:2017-11-03 02:39:07
【问题描述】:
给定:排序的整数数组,整数都是不同的 - 没有重复。
问题:编写一个基于分治的算法(在运行时尽可能好),用于检查数组中是否存在 A[i]=i 的索引 i。 p>
好吧,我想到了二进制搜索,它是 O(logn) 运行时间复杂度。 还有比这更快的吗?
【问题讨论】:
-
比这更快的只是 O(1),我认为您无法在那个时候找到解决问题的算法。所以,是的,二分搜索是您的最佳选择。
-
二分搜索似乎是显而易见的选择。 O(loglogn) 也会比 O(logn) 快,但我看不出这是如何实现的。
-
分而治之也意味着 O(logn),因为无论输入被除以什么常数 c,它仍然是 O(logn)。例如。如果 c = 4 会给出以 4 为底的对数,即 logn/log4,因为 log4 是一个常数,所以它仍然是 O(logn)。
-
@maraca 我明白了。谢谢马拉卡
-
是否知道值的范围以及它们在该范围内的分布?
标签: arrays algorithm divide-and-conquer