코딩테스트

[JAVA] 이진탐색 재귀함수 구현

dackyy 2022. 7. 13. 16:18
반응형
package Day1;

import java.util.Scanner;

public class BinarySearchRecur {
    static int[] arr;
    static int BinarySearch(int key, int pl,int pr){
        do {
            int pc = (pl + pr) / 2;
            if(pl>arr.length || pr<arr.length)
                return -1;
            if (arr[pc] == key) {
                return pc;
            } else if (arr[pc] < key) {
                return BinarySearch(key,pc +1, pr);
            } else
                return BinarySearch(key, pl, pc-1);
        }while(pl <= pr);
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Enter the size of array: ");
        int size = sc.nextInt();
        arr = new int[size];
        System.out.println("오름차순으로 입력해주세요");
        System.out.print("arr[0]=");
        arr[0] = sc.nextInt();

        for (int i = 1; i < size; i++) {
            do {
                System.out.print("arr[" + i + "]=");
                arr[i] = sc.nextInt();
            }while(arr[i] < arr[i-1]);
        }
        System.out.print("검색할 값을 입력하세요 :");
        int idx =BinarySearch(sc.nextInt(), 0, arr.length-1);
        if(idx < 0)
            System.out.println("찾는 값이 없습니다");
        else
            System.out.print("찾는 값의 인덱스는 : "+idx);
    }
}
반응형