이진 탐색BinarySearchBinarySearch, 선형 탐색보다 얼마나 빠를까?

2025. 4. 15. 15:20·Computer Science
목차
  1. 탐색SearchSearchSearch이란?
  2. 선형 탐색
  3. 이진 탐색
  4. 실행 속도 직접 비교해보기
  5. 주의할 점
728x90

탐색SearchSearchSearch이란?

탐색은 데이터 속에서 원하는 값을 찾는 작업입니다.
예를 들어, [1, 3, 5, 7, 9] 안에서 5가 있는지 찾는 것입니다.

탐색 알고리즘에는 대표적으로 두 가지가 있습니다

  • 선형 탐색 LinearSearchLinearSearch
  • 이진 탐색 BinarySearchBinarySearch

선형 탐색

def linear_search(arr, target):
	for i in range(len(arr)):
    	if arr[i] == target:
        	return i
    return -1
  • 방식: 앞에서부터 하나씩 비교
  • 정렬 필요 없음
  • 시간복잡도: Onn 최악의경우끝까지가야함최악의경우끝까지가야함최악의경우끝까지가야함

이진 탐색

  • 전제 조건: 데이터가 정렬되어 있어야 함
def binary_search(arr, target):
    left, right = 0, len(arr) - 1

    while left <= right:
        mid = (left + right) // 2
        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            left = mid + 1
        else:
            right = mid - 1

    return -1
  • 방식: 중간값과 비교 → 절반식 줄여가면 탐색
  • 정렬된 배열에서만 사용 가능
  • 시간복잡도: Olognlogn

실행 속도 직접 비교해보기

import time

arr = list(range(1, 1_000_001))  # 1부터 100만까지
target = 999_999

# 선형 탐색
start = time.time()
linear_search(arr, target)
end = time.time()
print(f"Linear Search: {end - start:.6f} sec")

# 이진 탐색
start = time.time()
binary_search(arr, target)
end = time.time()
print(f"Binary Search: {end - start:.6f} sec")

# Linear Search: 0.080123 sec
# Binary Search: 0.000013 sec

 


탐색 횟수 예시 선형 탐색 O(nO(n) 이진 탐색 O(lognO(logn)
n = 10 최대 10회 최대 4회
n = 1,000 최대 1,000회 최대 10회
n = 1,000,000 최대 1,000,000회 최대 20회

 

이진 탐색은 한 번 비교할 때마다 탐색 범위가 절반으로 줄어들기 때문입니다.


주의할 점

  • 이진 탐색은 정렬된 배열에서만 사용 가능
  • 정렬되지 않은 배열에서는 먼저 정렬 Onlognnlogn → 이득이 없을 수도 있음
  • 인덱스가 중요한 경우위치반환위치반환위치반환에는 이진 탐색을 직접 구현해야 함

항목 선형 탐색 이진 탐색
사용 조건 정렬 필요 없음 정렬 필요
시간복잡도 Onn Olognlogn
속도 느림 매우 빠름
코드 구현 쉬움 비교적 복
728x90
반응형
저작자표시 비영리 변경금지 새창열림새창열림새창열림

'Computer Science' 카테고리의 다른 글

Hash Table이란? for python  00 2025.04.16
Heap, Stack, Queue는 언제 쓰는 자료구조일까? for python  00 2025.04.16
정렬 알고리즘 버블,선택,삽입버블선택삽입버블,선택,삽입  00 2025.04.15
시간 복잡도와 Big-O  00 2025.04.15
람다lambdalambda 함수란?  00 2025.04.11
  1. 탐색SearchSearchSearch이란?
  2. 선형 탐색
  3. 이진 탐색
  4. 실행 속도 직접 비교해보기
  5. 주의할 점
'Computer Science' 카테고리의 다른 글
  • Hash Table이란? for python
  • Heap, Stack, Queue는 언제 쓰는 자료구조일까? for python
  • 정렬 알고리즘 버블,선택,삽입버블선택삽입버블,선택,삽입
  • 시간 복잡도와 Big-O
Balang
Balang
음악 전공생의 개발일지
  • Balang
    Balang
    Balang
  • 전체
    오늘
    어제
  • 반응형
    • All Post 147147 N
      • python 4545
        • selenium 44
        • algorithm 99
        • Django 66
        • Pandas | Numpy 2222
      • SQL 99
      • Data Engineer 2929
      • Data Scientist 33
      • Data Analysis 99
      • Computer Science 3535
      • Why? 1515
      • 마음가짐 22 N
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Balang
이진 탐색BinarySearchBinarySearch, 선형 탐색보다 얼마나 빠를까?
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.