旋转数组查找

问题

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 例如数组{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],则只有一个升序数组中。

 

posted @ 2019-08-08 20:54  xd_xumaomao  阅读(542)  评论(0编辑  收藏  举报