Algorithm/📝 Concept

[알고리즘/Algorithm] 범위를 좁혀가는 이진 탐색 알고리즘

posted by sangmin

Search Algorithm

이진 탐색에 앞서 순차 탐색에 대해 먼저 이해할 필요가 있다.

순차 탐색이란 리스트 안의 특정한 데이터를 찾기 위해 맨 앞에서부터 하나씩 확인하는 방법을 뜻한다. 이는 보통 정렬되어 있지 않은 리스트에서 많이 사용하는데, 데이터가 아무리 많아도 시간만 충분하다면 항상 원하는 데이터를 찾을 수 있다.
이처럼 데이터 정렬 여부와 관계없이 항상 맨 앞에서부터 확인하기 때문에 시간복잡도는 O(N) 이다.

반면 이진 탐색은 정렬된 데이터의 탐색 범위를 반씩 좁혀가며 확인한다. 시작점과 끝점, 중간점 3개의 변수를 사용하는데, 찾고자하는 데이터와 중간점 위치에 있는 데이터를 반복해서 비교한다.
한 번 확인할 때마다 확인하는 데이터가 반으로 줄기 때문에 시간복잡도는 O(logN) 이다.

재귀 함수로 구현

반복문으로 구현


참고

  • 이것이 취업을 위한 코딩 테스트다