본문 바로가기

알고리즘

Java) 이진 탐색 구현하기 알고리즘

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] arr = {1,2,3,4,5,6,7,8,9,10};
        System.out.print("찾으시려는 숫자를 입력하시오 : ");
        int n = sc.nextInt();
        int left = 0;
        int right = arr.length-1;
        for(int i =0;;i++) {
            int mid = (left+ right)/2;
            if(arr[mid] == n) {
                System.out.printf("찾았습니다. 찾는 문자는 %d에 있습니다.", i);
                break;
            }
            
            else if(arr[mid]>n)
                right = mid-1;
            
            else {
                left = mid+1;
            }
        }
    }
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs

1. left와 right를 설정한다.

2. left와 right를 이요하여 mid를 설정해준다.

3. 만약 찾는 문자가 배열의 mid보다 오른쪽에 있을 경우 left를 mid+1로 설정해준다.

4. 또는 찾는 문자가 배열의 mid보다 왼쪽에 있는 경우 right를 mid -1 로 설정한다.

*이진탐색을 이용할 경우 배열이 오름차순이나 내림차순으로 정리 되어 있어야 한다.

'알고리즘' 카테고리의 다른 글

Java) 순차탐색 알고리즘 구현  (0) 2020.04.17
Java) 회문 판별 알고리즘  (0) 2020.04.17
Java) 소수 판별 알고리즘  (0) 2020.04.16