Binary Search   이진 검색

(2021-03-02)

이진 탐색


1. 이진 검색 (Binary Search)                              

  ㅇ 실행 방식
     - 기 정렬되어있는 순서 리스트에서 만 가능한 검색 방법
     - 중앙 위치로부터 탐색 범위를 반씩 줄이면서 자료를 찾는 방법              ☞ 분할 정복법 참조

  ㅇ 시간복잡도 : O(log n)                                   ☞ 시간복잡도 표기 예 (로그시간) 참조
     - 매번 그 크기를 반씩 줄여나감 
        . 1번째 (n개), 2번째 (n/2개), 3번째 (n/2 * 1/2), ... , k번째 (n * (1/2)k)
        . 마지막 남는 개수를 1로 하면, n*(1/2)k = 1, 2k = n, k = log2 n 

  ㅇ 적용 : 정렬된 자료 만 가능


2. 이진 검색알고리즘 표현 (반복적 구현)알고리즘의 표현 (by 자바스크립트)
      
function binarySearchIterative(array, n){
    let low = 0;
    let high = array.length-1;

    while (low <= high) {
        let mid = Math.floor( (high + low) / 2 );
        // (오버플로우 방지) => mid = low + Math.floor((high - low)/2)
        
        if (n > array[mid]) {
            low = mid + 1;
        } else if (n < array[mid]) {
            high = mid - 1;
        } else {
            return mid;
        }
    }
    return -1;
}
- 입력 : array 배열, n 검색할 값 - 출력 : 검색된 위치 인덱스 또는 -1(검색실패) ㅇ 알고리즘의 단계 - ① 최초 하한은 배열의 첫째값(0), 상한은 배열의 끝값(길이-1) - ② 상한,하한 사이에 중간값을 찾는 루프 . ⓐ 중간값 지정 (상한,하한의 가운데) . ⓑ 찾던 값이 중간값 보다 큰지 작은지에 따라, 하한 또는 상한을 하나씩 늘리거나 줄이면서 재지정 . ⓒ 찾던 값이 중간값 이면, 해당 인덱스를 반환하고, 검색 끝냄 - ③ 상한,하한 구간을 반씩 줄여가는 중에 역전되면, 이 배열에 찾는 값이 없는 것이고, -1을 반환 3. 이진 검색알고리즘 표현 (재귀적 구현) ㅇ ... (작성중) ...



Copyrightⓒ written by 차재복 (Cha Jae Bok)
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"