회전된 배열에서 최대값 찾기 - java

jino630·2021년 6월 16일
0

search

목록 보기
3/3
        {
            int[] arr = new int[]{1, 2, 3, 4, 5};

            int idx = findMaxIndex(arr, 0, arr.length - 1);
            assert (4 == idx);

            arr = new int[]{2, 3, 4, 5, 1};

            idx = findMaxIndex(arr, 0, arr.length - 1);
            assert (3 == idx);

            arr = new int[]{3, 4, 5, 1, 2};

            idx = findMaxIndex(arr, 0, arr.length - 1);
            assert (2 == idx);

            arr = new int[]{4, 5, 1, 2, 3};

            idx = findMaxIndex(arr, 0, arr.length - 1);
            assert (1 == idx);

            arr = new int[]{5, 1, 2, 3, 4};

            idx = findMaxIndex(arr, 0, arr.length - 1);
            assert (0 == idx);
        }
    public static int findMaxIndex(int[] arr, int start, int end) {
        if (end <= start) {
            return start;
        }

        int mid = (start + end) / 2;

        if (start <= (mid - 1) && arr[mid - 1] > arr[mid]) {
            return mid - 1;
        }

        if ((mid + 1) <= end && arr[mid] > arr[mid + 1]) {
            return mid;
        }

        if (arr[start] <= arr[mid]) {
            return findMaxIndex(arr, mid + 1, end);
        }

        return findMaxIndex(arr, start, mid - 1);
    }

0개의 댓글