educative.io

Educative

Improved Solution

A user suggested this solution:

static int binarySearch(int[] arr, int start, int end, int key) {
    if (start > end) return -1;
    int mid = start + (end - start) / 2;
    if (arr[mid] == key) return mid;
    if (arr[mid] >= arr[start]) {
        if (key >= arr[start] && key < arr[mid]) return binarySearch(arr, start, mid - 1, key);
        return binarySearch(arr, mid + 1, end, key);
    } else {
        if (key <= arr[end] && key > arr[mid]) return binarySearch(arr, mid + 1, end, key);
        return binarySearch(arr, start, mid - 1, key);
    }
}
3 Likes