```
public static int search(int[] arr, int key) {
if(arr == null || arr.length == 0) {
return -1;
}
int left = 0;
int right = arr.length - 1;
int mid = right / 2;
while(left < right) {
if(arr[mid] < arr[mid+1]) {
if(key < arr[mid]) {
right = mid - 1;
}
else if(key > arr[mid]) {
left = mid + 1;
}
else {
return mid;
}
}
else {
if(key < arr[mid]) {
left = mid + 1;
}
else if(key > arr[mid]) {
right = mid - 1;
}
else {
return mid;
}
}
mid = left + (right - left) / 2;
}
return arr[mid] == key? mid: -1;
}
```

Type your question above this line.

Course: https://www.educative.io/collection/5668639101419520/5671464854355968

Lesson: https://www.educative.io/collection/page/5668639101419520/5671464854355968/5114837707259904