이진탐색 Binary Search
이진탐색과정
- 이진 탐색의 경우 정렬된 상태에서 수행해야합니다.
- 이진탐색의 경우 크기가 절반씩 줄어듦으로 순차탐색보다 빠릅니다.
- 중간 위치를 찾은 뒤 찾는 값과 비교합니다.
- 같으면 해당 위치를 return합니다.
- 찾는 값이 중간 위치보다 작으면 왼쪽에서 이진 탐색을 수행합니다.
- 찾는 값이 중간 위치보다 크면 오른쪽에서 이진 탐색을 수행합니다.
def binary_search(data, var):
left=0
right=len(data)-1
while left<=right:
mid = (left+right)//2
if data[mid] == var:
return mid
elif data[mid] > var:
right = mid-1
elif data[mid] < var:
left = mid+1
return -1
data = [1, 3, 6, 7, 10, 14, 29, 45]
print(binary_search(data, 3))
'알고리즘' 카테고리의 다른 글
백준 1920번[수찾기] 문제풀이 (0) | 2021.03.07 |
---|---|
백준 1181번[단어 정렬] 문제풀이 (0) | 2021.03.06 |
[버블 정렬] Bubble Sort - Python (0) | 2020.12.25 |
[프로그래머스] 정렬 - K번째 수 (0) | 2020.12.24 |
[퀵 정렬] Quick Sort - Python (0) | 2020.12.24 |