이진 탐색 Binary Search
정렬되어 있는 리스트에 대해 효과적인 탐색
시작, 중간, 끝 정보를 이용해 탐색 범위를 반에 가깝게 줄여나가자.
이진 탐색 Binary Search
Divide and Conquer?
매 단계마다 탐색 범위를 반으로 줄이기.
약간 분할 정복 느낌????
시작, 중간, 끝 정보를 이용해 탐색 범위를 줄이자.
중간값과 찾는 값의 대소비교를 통해 탐색 방향을 정하자.
이진 탐색을 위한 전제 조건은 iterable이 정렬되어 있어야 한다는 것.
정렬되지 않은 iterable을 반으로 쪼개봤자 의미가 없지 않을까?
재귀 or 반복문을 통해 각각 구현이 가능한데...해결하고자 하는 문제에 따라 맞춰 구현하면 된당..
핵심 로직
- 기저조건
- 중간 인덱스 구하기
- 중간값과 찾는 값 비교를 통해 이진 분할 방향 결정
단계를 찾는 값을 찾거나, 기저조건에 전체 탐색이 종료될때까지 반복한다ㅏㅏㅏㅏ.
매 단계를 거칠 때마다 탐색범위는 절반가량 줄어들게 된다!
log2N!
따라서 이진탐색의 시간복잡도는 O(logN)
구현
재귀로 구현하기
def binary_search(array, value, left, right):
if left > right:
return
mid = (left + right) // 2
if array[mid] == value:
return mid
elif array[mid] > value:
return binary_search(array, value, left, mid-1)
else:
return binary_searh(array, value, mid+1, right)
반복문으로 구현하기
def binary_search(array, value, left, right):
while left <= right:
mid = (left + right) // 2
if array[mid] == value:
return mid
elif array[mid] > value:
right = mid -1
else:
left = mid + 1
return None
더보기
bisect
이진 탐색 트리
FINDSTUFF
TTEOKBOKKI (Feat.파라메트릭 서치)
‹ 탐색 알고리즘 목록으로
Author And Source
이 문제에 관하여(이진 탐색 Binary Search), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@zoody/이진-탐색-Binary-Search
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
def binary_search(array, value, left, right):
if left > right:
return
mid = (left + right) // 2
if array[mid] == value:
return mid
elif array[mid] > value:
return binary_search(array, value, left, mid-1)
else:
return binary_searh(array, value, mid+1, right)
def binary_search(array, value, left, right):
while left <= right:
mid = (left + right) // 2
if array[mid] == value:
return mid
elif array[mid] > value:
right = mid -1
else:
left = mid + 1
return None
bisect
이진 탐색 트리
FINDSTUFF
TTEOKBOKKI (Feat.파라메트릭 서치)
‹ 탐색 알고리즘 목록으로
Author And Source
이 문제에 관하여(이진 탐색 Binary Search), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@zoody/이진-탐색-Binary-Search
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Author And Source
이 문제에 관하여(이진 탐색 Binary Search), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@zoody/이진-탐색-Binary-Search저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)