본문 바로가기
알고리즘

[알고리즘 마스터] 7. 이진 탐색 (Binary Search)

by 개발하는 감자입니다 2023. 12. 27.
728x90

안녕하세요. 개발감자 박그냥입니다!🥔

오늘은 알고리즘 중 이진탐색에 대해서 정리해보도록 하겠습니다.

 

 

1. 이진탐색

  • 기능 : 데이터가 정렬되어 있는 상태에서 타킷 데이터를 탐색하는 알고리즘
  • 특징 : 중앙값 비교를  이용해 데이터의 크기를 절반씩 줄이면서 대상을 찾습니다. 이분탐색이라고도 불립니다. 
  • 시간 복잡도 : O(logN) ->> N : 데이터의 갯수

 

2. 이진탐색의 원리

일단, 데이터가 오름차순으로 정렬되어 있어야 합니다! ( 만약 내림차순이라면 조건을 반대로 설정하세요)

저는 타깃데이터가 16이고, 1,4,6,7,9,14,16으로 정렬되어 있는 데이터를 가지고 원리를 설명해보도록 할게요 !

1) 현재 데이터셋의 중앙값을 선택합니다.

  • 이 데이터 셋의 중앙값인 7을 선택했습니다.

2) 중앙값 > 타깃 데이터 일 때 중앙값 기준으로 왼쪽 데이터 셋을, 중앙값 < 타깃 데이터일 때 중앙값 기준으로 오른쪽 데이터셋을 선택합니다.

  • 위의 사진에서 중앙값이 7이었고 타깃 데이터는 16이기 때문에 오른쪽 데이터 셋인 9,14,16을 선택했습니다.
  • 현재 중앙값이 14이고 타깃데이터가 16이기 때문에 14의 오른쪽 데이터셋인 16을 선택할 것입니다.

3) 2번의 과정을 반복하다가 중앙값 == 타깃 데이터 일 때 탐색을 종료합니다.

 

3. 이진탐색 활용

  • 코딩 테스트에서 원하는 데이터를 탐색할 때 가장 일반적으로 사용되는 알고리즘으로, 구현 및 원리가 비교적 간단합니다.

더 유익한 포스팅으로 돌아올게요! 개발감자였습니다 :)
728x90
반응형