class Solution { public: int search(int A[], int n, int target) { int pivot = 0; for(int i = 0; i < n - 1 ; ++i) { if(A[i] > A[i + 1]) { pivot = i; break; } } int start = 0; int end = n - 1; if(target >= A[0] && target <= A[pivot]) { start = 0; end = pivot; } else if(target >= A[pivot + 1] && target <= A[n - 1]) { start = pivot + 1; end = n - 1; } while(start <= end) { int middle = (start + end) / 2; if(A[middle] == target) { return middle; } else if(A[middle] > target) { end = middle - 1; } else { start = middle + 1; } } return -1; } };
No comments:
Post a Comment