【发布时间】:2021-11-21 17:16:55
【问题描述】:
我有一个具有最小值的值向量,但在它之后不减少,之前不增加。示例如下:
std::vector<int> arr = {90, 80, 70, 60, 55, 62, 71, 89, 104}
在示例中,我想找到 55。 我希望能够有效地找到它的最小值。 O(n) 复杂度是不够的。据说可以对二分搜索进行某种修改,但我想知道是否有现成的解决方案。
【问题讨论】:
-
好吧。在这个元素之前不增加,之后不减少
-
如果数组是排序好的,可以使用二分查找或者斐波那契查找。但是,对于小型数组,任何比线性搜索更复杂的事情都不容忽视。
-
我愿意,我明确地说“它之后不减少,之前不增加”
-
对不起,我没看到那部分。
-
没有内置任何东西,但你说得对,修改后的二进制搜索在一般情况下就足够了。