【发布时间】:2012-07-17 04:17:15
【问题描述】:
在单调增加然后单调减少的序列中找到最大值或最小值可以在 O(log n) 中完成。
但是,如果我想检查一个数字是否存在于这样的序列中,这也可以在 O(log n) 中完成吗?
我认为这是不可能的。考虑这个例子:1 4 5 6 7 10 8 3 2 0。
在这个例子中,如果我需要查找序列是否包含'2',我没有任何条件将搜索空间划分为原始搜索空间的一半。在最坏的情况下,它将是 O(n),因为当我们尝试搜索 2 时,您需要检查两半。
我想知道,如果这个搜索在 O(log n) 时间内完成?
【问题讨论】:
标签: c algorithm binary-search