여름의 서재

[알고리즘 종류] 이진 탐색 (Binary Search) 본문

알고리즘/알고리즘 종류

[알고리즘 종류] 이진 탐색 (Binary Search)

엉아_ 2021. 8. 13. 20:47
728x90

- 이진 탐색

  • 자료의 가운데에 있는 항목의 키 값과 비교하여 다음 검색의 위치를 결정하고 검색을 계속 진행하는 방법
  • 목적 키를 찾을 때까지 이진 검색을 순환적으로 반복 수행함으로써 검색 범위를 반으로 줄여가면서 보다 빠르게 검색을 수행함
  • 이진 검색을 하기 위해서는 자료가 정렬된 상태여야 함
def binary_search(a, key):
    start = 0
    end = len(a) - 1

    while start <= end:
        middle = (start + end)//2

        if a[middle]== key:
            return True # 검색 성공
        elif a[middle] > key:
            end = middle - 1
        else:
            start = middle + 1
            
    return False # 검색 실패

 ↓재귀 함수 이용

def binary_search(a, start, end, key):
    if start > end: # 검색 실패
        return False
    else:
        middle = (start + end)//2

        if a[middle]== key:
            return True # 검색 성공
        elif a[middle] > key:
            return binary_search(a, start, middle+1, key)
        else:
            return binary_search(a, middle-1, end, key)

 

📄 관련 문제

https://glory-summer.tistory.com/152

 

[프로그래머스] 입국심사 (이분탐색)

📕 문제 https://programmers.co.kr/learn/courses/30/lessons/43238 코딩테스트 연습 - 입국심사 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시

glory-summer.tistory.com

 

Comments