Follow up for "Search in Rotated Sorted Array":
What if duplicates are allowed?
Would this affect the run-time complexity? How and why?
Write a function to determine if a given target is in the array.
//详细情况类似Search in Rotated Sorted Array
//只需另外处理!A[first] == A[mid]即可!相等情况!
//假设默认从小到大排列!
bool search(int A[], int n, int target) {
int mid,first,last;
first = 0;
last = n-1;
while(first <= last)
{
mid = (first + last)/2 ;//标准写法:MID = LEFT + ((RIGHT - LEFT) / 2);(LEFT = 0 )
if(A[mid] == target)return true;
else if(A[first] < A[mid])//前半部分有序
{
if(target >= A[first]&&target < A[mid])//有序区间
{
last = mid - 1;
}
else
{
first = mid + 1;
}
}
else if(A[first] > A[mid] )
{
if(target > A[mid]&&A[last] >= target)//有序区间
{
first = mid + 1;
}
else
{
last = mid - 1;
}
}
else//A[first] == A[mid] 则直接跳过不管!
{
first = first+1;
}
}
return false;
}