3월 5일-이진탐색

Yullgiii·2024년 3월 5일
0
post-thumbnail

이진탐색

이진 탐색(Binary Search)과 그 시간 복잡도

이진 탐색은 정렬된 배열에서 특정 요소를 찾는 데 사용되는 효율적인 알고리즘이다. 이 방식은 배열의 중간 요소를 기준으로 찾고자 하는 값과 비교하여, 탐색 범위를 절반으로 줄여가며 원하는 값을 찾는다.

작동 방식

  1. 배열의 중간 요소를 선택한다.
  2. 중간 요소가 찾고자 하는 값과 일치하는지 확인한다.
  3. 일치하지 않는 경우, 찾고자 하는 값이 중간 요소보다 작으면 배열의 왼쪽 절반에서 탐색을 계속하고, 크면 오른쪽 절반에서 탐색을 계속한다.
  4. 이 과정을 반복하며, 찾고자 하는 값을 찾거나 탐색 범위가 더 이상 없을 때까지 계속한다.

시간 복잡도 증명

이진 탐색의 시간 복잡도는 O(log n)이다. 이는 탐색 과정에서 배열을 절반씩 줄여나가기 때문에, 탐색 범위가 지수적으로 감소한다는 사실에서 유래한다.

  • 초기 배열의 크기를 n으로 가정할 때, 첫 번째 탐색 후 배열 크기는 n/2, 그 다음은 n/4, 이어서 n/8, n/16과 같이 줄어든다.
  • k번의 탐색 후 배열의 크기가 1이 되거나, 즉 n/2^k = 1이 되는 지점에서 탐색이 종료된다.

이를 통해 다음과 같은 식을 유도할 수 있다:

n/2^k = 1
양변에 로그를 취하면:
log_2(n) = k

따라서, 탐색에 필요한 단계 수는 log_2(n)이며, 이는 이진 탐색의 시간 복잡도가 O(log n)임을 증명한다.

결론

이진 탐색은 정렬된 배열에서 특정 요소를 빠르게 찾을 수 있는 효율적인 알고리즘이다. 그 시간 복잡도는 O(log n)으로, 큰 데이터셋에서도 빠른 탐색 속도를 보장한다. 이진 탐색은 정렬된 데이터에 대한 탐색, 데이터베이스 쿼리 최적화, 알고리즘 문제 해결 등 다양한 분야에서 널리 사용된다.

profile
개발이란 무엇인가..를 공부하는 거북이의 성장일기 🐢

0개의 댓글