이진탐색(binary search)란 무엇인가? (python)

2025. 5. 23. 01:52·CS/개념

목차

I. 이진 탐색 정의

II. 이진 탐색을 사용하는 이유

III. 이진 탐색 구현

 

I. 이진 탐색의 정의

이진 탐색은 '이미 정렬되어 있는 배열'에서 효율적으로 원하는 값을 탐색하는 알고리즘이다

 

이진 탐색은 이름에서 유추할 수 있듯, 동작 방식이 매우 간단하다.

다음과 같은 배열이 존재하며, 19를 찾는 상황이라고 가정해보자

 

 

배열의 중앙 값을 찾은 뒤 찾고자하는 값보다 작다면 오른쪽 배열의 중앙 값을 또다시 찾아본다

위 과정을 반복하여, 찾고자하는 값(19)를 찾아낸다

 

 

 

II. 이진 탐색을 사용하는 이유

위 동작을 통해서 유추가 가능하겠지만, 반복문이 진행될 때마다, 탐색해야 할 배열의 원소가 절반으로 줄어들기 때문에 시간 복잡도가 O(log n)으로 탐색이 매우 빠르다

 

 

 

III. 이진 탐색 구현 방법

def binary_search(array, target, start, end):
    while start <= end:
        mid = (start + end) // 2
        
        if array[mid] == target:
            return mid
        elif array[mid] > target:
            end = mid - 1
        else:
            start = mid + 1
            
    return None

 

배열, 목표값, 시작 지점, 끝 지점을 parameter로 지정합니다.

start 지점이 end랑 같거나 커지는 순간 종료됩니다

 

반복문이 진행되는 동안, mid = (start + end) // 2로 새로 할당을 진행하게 되며

찾고자하는 값이 배열의 가운데 지점과 일치하면 반환합니다

만약, 배열의 중앙 값이 목표 값보다 크다면, 배열의 왼쪽 부분을 탐색해야하기 때문에 end = mid - 1로 지정합니다.

반대의 경우 start = mid + 1로 지정합니다

 

탐색 결과, 값을 찾지 못했을 경우 None을 반환합니다

'CS > 개념' 카테고리의 다른 글

[CSAPP Chapter2] 부동소수점이란?  (0) 2025.05.24
스택과 큐( + linked list queue) 알아보기  (0) 2025.05.24
병합 정렬(Merge sort)개념 및 구현 방법(python)  (1) 2025.05.22
퀵 정렬(Quick sort)개념 및 구현 방법(python)  (0) 2025.05.22
삽입 정렬(Insertion sort)개념 및 구현 방법(python)  (0) 2025.05.21
'CS/개념' 카테고리의 다른 글
  • [CSAPP Chapter2] 부동소수점이란?
  • 스택과 큐( + linked list queue) 알아보기
  • 병합 정렬(Merge sort)개념 및 구현 방법(python)
  • 퀵 정렬(Quick sort)개념 및 구현 방법(python)
히퓨
히퓨
오늘이 어제보다 나아졌는가
  • 히퓨
    속도보다는 방향
    히퓨
  • 전체
    오늘
    어제
    • 분류 전체보기 (48) N
      • 경제 (5)
      • 코딩테스트 (1)
      • CS (21)
        • 개념 (21)
      • 일상 (1) N
        • 일기 (1) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    경제위기
    경제 뜻
    한도협상
    미국부채
    디폴트 #미국 부채한도
    경제
    경제란
    부채한도
    디폴트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
히퓨
이진탐색(binary search)란 무엇인가? (python)
상단으로

티스토리툴바