查找已移位的已排序数组中的元素

时间:2010-06-02 21:20:03

标签: algorithm

  

可能重复:
  Searching a number in a rotated sorted Array

说原始列表是 1 2 3 4 5 6 7 8 9 10

你移动它以便它变成

5 6 7 8 9 10 1 2 3 4

所以说我想检查7是否在数组中。我将如何有效地做到这一点。

3 个答案:

答案 0 :(得分:4)

使用三元搜索。它的工作方式类似于二进制搜索(以及对数时间),但是当序列形状像楔形(/)或vee(/)时,可以找到元素。

答案 1 :(得分:2)

使用二进制搜索的变体来查找数组中小于前一个元素的点;这确定了转变点。现在将数组分成两半,并在包含您要搜索的元素的一半中进行二分查找。

答案 2 :(得分:0)

取消列表(无论是物理上还是仅通过查找逻辑),然后是二进制搜索?