본문 바로가기
[알고리즘 + 자료구조]

[알고리즘] 이진 검색

by Hevton 2020. 10. 11.
반응형

이진 검색

이진 검색은 요소가 오름차순 또는 내림차순으로 정렬된 배열에서 검색하는 알고리즘이다.

이진 검색 알고리즘의 적용 전제조건은 '데이터가 키 값으로 이미 정렬된 상태' 이다.

선형 검색보다는 조금 더 빠르다.

'범위 중앙 찍고 비교하고, 검색범위 좁히고 범위 중앙 찍고 비교하고....' 방식

 

//요소의 개수가 n인 배열 a에서 key와 일치하는 요소를 이진 검색
int bin_search(const int a[], int n, int key) {
    
    int pl = 0; // 검색 범위 맨 앞의 인덱스
    int pr = n - 1; // 검색 범위 맨 끝의 인덱스
    int pc; // 검색 범위 가운데의 인덱스
    
    do {
        pc = (pl + pr) / 2;
        if(a[pc] == key) // 검색 성공
            return pc;
        else if(a[pc] < key)
            pl = pc + 1;
        else
            pr = pc - 1;
    } while(pl <= pr);
    
    return -1; // 검색 실패
}

 

 

분석

이진 검색의 평균 횟수 : log n

시간복잡도 : O(log n)

 

 

반응형

'[알고리즘 + 자료구조]' 카테고리의 다른 글

[자료구조] 다중 STACK  (0) 2020.10.14
[자료구조] STACK  (0) 2020.10.14
[알고리즘] 선형 검색  (0) 2020.10.11
[알고리즘] Insert sort  (0) 2020.10.05
조합 알고리즘( N개에서 C개 뽑기 ) - JAVA 자바  (0) 2020.09.12