排序旋转整数数组,搜索算法[重复]

Posted

技术标签:

【中文标题】排序旋转整数数组,搜索算法[重复]【英文标题】:Sorted rotated integer array, search algorithm [duplicate] 【发布时间】:2015-05-14 13:49:06 【问题描述】:

一个向左旋转未知次数的整数排序数组,编写一个有效的算法来搜索一个元素。

示例:4 5 6 7 8 9 1 2 3 4

我在想每次在二分搜索中找到中间元素时,我都会将元素与极端元素进行比较,然后决定选择哪一半来重复该过程。这是错的吗?或者有什么有效的算法?

【问题讨论】:

【参考方案1】:

您的示例数组包含重复项。当存在重复时,没有有效的算法 - 在最坏的情况下,您必须始终进行 O(n) 工作。

为了证明这一点,考虑这种形式的数组:

000000000000000010000000

这是一个排序数组的旋转,但在最坏的情况下,您必须遍历每个元素以查看 1 的位置。

【讨论】:

以上是关于排序旋转整数数组,搜索算法[重复]的主要内容,如果未能解决你的问题,请参考以下文章

算法leetcode|33. 搜索旋转排序数组(rust重拳出击)

算法leetcode|33. 搜索旋转排序数组(rust重拳出击)

数据结构与算法之深入解析“搜索旋转排序数组”的求解思路与算法示例

数据结构与算法之深入解析“搜索旋转排序数组II”的求解思路与算法示例

搜索旋转排序数组

搜索旋转排序数组