旋转数组查找

问题

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转。判断旋转数组中是否存在某个数。

思路

对于有序数组查找,我们肯定会想到二分查找法,这个问题就是复杂情况下的二分查找:

我们二分数组得到a[mid]

(1) a[mid] > a[l] 且 a[mid] > a[r],则a[mid]位于左边升序数组中。

(2) a[mid] < a[l] 且 a[mid] < a[r],则a[mid]位于右边升序数组中。

(3) a[mid] > a[l] 且 a[mid] < a[r],则只有一个升序数组中。

原文地址:https://www.cnblogs.com/xumaomao/p/11323786.html