Search Algorithm
이진 탐색에 앞서 순차 탐색에 대해 먼저 이해할 필요가 있다.
Sequential Search
순차 탐색이란 리스트 안의 특정한 데이터를 찾기 위해 맨 앞에서부터 하나씩 확인하는 방법을 뜻한다. 이는 보통 정렬되어 있지 않은 리스트에서 많이 사용하는데, 데이터가 아무리 많아도 시간만 충분하다면 항상 원하는 데이터를 찾을 수 있다.
이처럼 데이터 정렬 여부와 관계없이 항상 맨 앞에서부터 확인하기 때문에 시간복잡도는 O(N) 이다.
Binary Search
반면 이진 탐색은 정렬된 데이터의 탐색 범위를 반씩 좁혀가며 확인한다. 시작점과 끝점, 중간점 3개의 변수를 사용하는데, 찾고자하는 데이터와 중간점 위치에 있는 데이터를 반복해서 비교한다.
한 번 확인할 때마다 확인하는 데이터가 반으로 줄기 때문에 시간복잡도는 O(logN) 이다.
재귀 함수로 구현
반복문으로 구현
참고
- 이것이 취업을 위한 코딩 테스트다