최대 1 분 소요

Binary Search 이란?

  • 오름차순 정렬되어 있는 리스트 내에서 특정 값의 인덱스를 찾는 알고리즘
  • 중간에 위치한 11을 기준으로 왼쪽부터 찾음
  • 5를 기준으로 오른쪽을 찾음
  • 이런식으로 계속 둘로 나눠가면서 사이즈를 줄여가며 찾음
  • 이러한 이유로 빠른 속도를 갖고 있음
    • 시간 복잡도 O(longN)
    • (N = 100) vs (logN = 6.64)
  • 정렬된 리스트에서만 사용 가능

코드 구현

package sort;  
  
public class BinarySearch {  
  
    public int search(int[] arr, int target) {  
        int l = 0;  // left
        int r = arr.length - 1;  // right
  
        int m;  // middle
        while (l <= r) {  
            m = l + ((r - l) / 2);  // overflow exception  
  
            if (arr[m] == target) {  
                return m;  
            }  
  
            if (arr[m] < target) {  // target 값이 더 큰 경우  
                l = m + 1;  
            } else {    // target 값이 더 작은 경우  
                r = m - 1;  
            }  
        }  
        return -1;  
    }  
}

댓글남기기