此题参考 http://blog.youkuaiyun.com/linhuanmars/article/details/20588511
代码
class Solution {
public:
bool search(int A[], int n, int target) {
if(n==0)
return false;
int left = 0;
int right = n-1;
while(left<=right)
{
int mid = (left+right)/2;
if(A[mid]==target)
return true;
if(A[mid]>A[left])
{
if(A[mid]>target&&target>=A[left])
{
right = mid-1;
}
else
{
left = mid + 1;
}
}
else if(A[mid]<A[left])
{
if(A[mid]<target && A[right]>=target)
{
left = mid+1;
}
else
{
right = mid-1;
}
}
else
{
++left;
}
}
return false;
}
};