728x90
반응형
알고리즘 - 이진 탐색 (Binary Search)
오름차순으로 정렬된 리스트에서 특정 값의 위치를 찾는 알고리즘으로, 모든 값을 순회해야하는 일반적인 search보다 더 빠르다. 중앙값을 찾는 값에 비교해서 중앙값이 찾는 값보다 크면 왼쪽을 탐색하고 찾는 값보다 작으면 오른쪽을 탐색한다.
최악의 경우에도 탐색 대상을 절반씩 계속해서 줄여나가기 때문에, 탐색 횟수가 logN이다.
따라서 T(N) = O(logN)
[ 예시 ]
[ 코드 ]
def binary_search(arr, target):
low, high = 0, len(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] > target:
high = mid - 1
if arr[mid] == target:
return mid
if arr[mid] < target:
low = mid + 1
return -1
728x90
반응형
'BASE > Alogorithm' 카테고리의 다른 글
알고리즘 - 깊이 우선 탐색 (DFS, Depth-First Search) (0) | 2021.01.27 |
---|---|
알고리즘 - 합병 정렬 (Merge Sort) (0) | 2021.01.26 |
알고리즘 - 선택 정렬 (Selection Sort) (0) | 2021.01.11 |
알고리즘 - 삽입 정렬 (Insertion Sort) (0) | 2021.01.11 |
알고리즘 - 버블 정렬 / 거품 정렬 (Bubble Sort) (0) | 2021.01.08 |
댓글