排序旋转整数数组,搜索算法[重复]
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重拳出击)
数据结构与算法之深入解析“搜索旋转排序数组”的求解思路与算法示例