如何找到旋转指数的枢轴位置?

时间:2011-08-30 13:45:41

标签: c++ c

  

可能重复:
  Searching in an sorted and rotated array

排序的数组在事先未知的某个枢轴处旋转。因此,例如,1 2 3 4 5可能变为3 4 5 1 2.现在我们需要在O(log n)时间内在旋转的数组中找到一个元素。

input: 3 4 5 1 2 
output: 3 (index of 1)


UNIMODAL-SEARCH (A[1 . . n]) 
  a, b    1, n 
  while a < b 
       do mid      ←(a + b)/2 
          if A[mid] < A[mid + 1] 
             then a     mid + 1 
             else b     mid 
  return A[a] 

该算法满足所有要求。但是当给出输入时有一个问题 (5,1,2,3,4}它无法正确找到枢轴。任何建议如何找到正确的枢轴位置?

但是在给出时

input: 5 1 2 3 4
output: something other than 1

如何找到支点?

0 个答案:

没有答案