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 };