1 class Solution {
2 public:
3 int search(int A[], int n, int target) {
4 // IMPORTANT: Please reset any member data you declared, as
5 // the same Solution instance will be reused for each test case.
6 if (n<=0)
7 return -1;
8 int left = 0, right = n-1;
9 int middle;
10 while (left<=right){
11 if (A[left]==target)
12 return left;
13 if (A[right]==target)
14 return right;
15 middle = (left+right)/2;
16 if (A[middle]==target)
17 return middle;
18 if (A[middle]>target){
19 if (A[right]>target){
20 if (A[middle]>A[right])
21 left = middle+1;
22 else right = middle-1;
23 }
24 else right = middle-1;
25 }
26 if (A[middle]<target){
27 if (A[right]>target)
28 left = middle+1;
29 else {
30 if (A[right]>A[middle])
31 right = middle-1;
32 else
33 left = middle+1;
34 }
35 }
36 }
37 return -1;
38 }
39 };