이진 탐색 (Binary Search)

Rudy·2023년 12월 11일

이진 탐색

이분 탐색은 이진 탐색, Binary Search 라고도 한다. 순차적 탐색보다 빠른 탐색을 위해 나온 탐색 방법으로 실제로 이분 탐색의 시간복잡도가 순차적 탐색보다 낮다.

public class Ex04 {

	public static void main(String[] args) {
		int [] m = {1, 3, 8, 11, 15, 17, 20, 21, 25, 30, 34};
		int n = 21;	// 찾을 값 지정
		
		int idx = binarySearch(m, n);	// 함수
		
		if ( idx != -1) {
			System.out.printf("m[%d] 위치에 있습니다.",idx);
		} else {
			System.out.print("찾는 값이 없습니다.");
		}
	} //main

	private static int binarySearch(int[] m, int n) {	// 배열 m 중에서 찾을 값 n 입력 받는다. 
		int bottom = 0, top = m.length-1, middle;
		
		while ( bottom <= top ) {
			middle = (bottom + top) / 2;
			if ( m[middle] == n ) {	// 만약 중간 값이 찾고자 하는 값이라면
				return middle;
			} else if( m[middle] > n ){	// 찾고자 하는 값이 중간 값보다 작다면
				top = middle-1;
			} else if ( m[middle] < n ) {	// 찾고자 하는 값이 중간 값보다 크다면
				bottom = middle+1;
			}
		}
		return -1;	// 찾는 값이 없다면 -1을 가지고 return
	} //binarySearch

} //class
profile
주니어 개발자

0개의 댓글