您的位置:首页 > 其它

解决旋转数组二分查找的万能程序

2014-12-02 20:51 260 查看
class Solution {
public:
bool search(int A[], int n, int target) {
int low = 0, high = n - 1;
while(low <= high){
int mid = low + ((high - low) >> 1);
if(A[mid] == target){
return true;
}
if(A[low] == A[mid] && A[mid] == A[high]){
low++;
high--;
continue;
}
if(A[low] <= A[mid]){//mid的左边有序
if(A[low] <= target && target < A[mid]){//目标数确定在mid的左半边
high = mid - 1;
}else{
low = mid + 1;
}
}else{//mid的右边有序
if(A[mid] < target && target <= A[high]){//目标数确定在mid的右半边

low = mid + 1;
}else{
high = mid - 1;
}
}
}
return false;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: