排序旋转整数数组,搜索算法

时间:2015-05-14 13:49:07

标签: arrays algorithm search data-structures

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

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

我在想每次在二进制搜索中找到一个mid时我会将元素与极端元素进行比较,然后决定选择哪一半来重复这个过程。这是错的吗?还是有任何有效的算法?

1 个答案:

答案 0 :(得分:0)

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

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

000000000000000010000000

它是已排序数组的旋转,但在最差的强制转换中,您必须遍历每个元素以查看1的位置。