public class Solution {
public boolean search(int[] A, int target) {
if (A.length<=0) return false;
return mySearch(A, 0, A.length-1, target)!=-1;
}
public int mySearch(int[] A, int head, int back, int target) {
if (head>back) return -1;
else {
int mid=(head+back)/2;
if (target==A[mid]) return mid;
if (A[mid]>A[head]) {
if (target<=A[mid] && target>=A[head]) return mySearch(A, head, mid-1, target);
else return mySearch(A, mid+1, back, target);
}
if (A[mid]<A[head]) {
if (target<=A[mid] || target>=A[head]) return mySearch(A, head, mid-1, target);
else return mySearch(A, mid+1, back, target);
}
if (A[mid]==A[head]) return mySearch(A, head+1, back, target);
return -1;
}
}
}
没有评论:
发表评论