728x90
오름차순으로 정렬된 배열에서 원하는 숫자를 찾는 알고리즘이다.
- 배열 전체의 중간값을 target 값과 비교
- 중간값이 target 값보다 크면 왼쪽 부분만 선택
- 왼쪽부분의 중간값을 다시 target 과 비교
left = 0
right = length-1
while left<=right:
mid = (left+right)//2
if m_list[mid] == target:
print(mid+1)
break
elif m_list[mid]>target:
right = mid-1
else :
left = mid+1
left 와 right 변수를 초기화 해준다. left 가 right 보다 작을 때 까지 반복을 해준다.
mid 는 left 와 right 의 중간값이고, mid 가 target 보다 크면 왼쪽에 치우쳐 있다는 얘기니, right 값을 mid-1 로 줄여준다.
그렇지 않으면 오른쪽으로 치우쳐 있다는 것이니 left 를 mid+1 로 늘린다.
target 값과 일치할 때 까지 반복한다.
728x90
'🟢 개념 정리 > algorithm' 카테고리의 다른 글
| 크루스칼 알고리즘 (0) | 2023.05.06 |
|---|---|
| Python 깊은 복사, 얕은 복사 (0) | 2023.04.28 |
| [깊이/너비 우선 탐색(DFS/BFS)] - 프로그래머스 고득점 kit (0) | 2023.03.08 |
| [동적계획법] - 프로그래머스 고득점 kit (0) | 2023.03.03 |
| [정렬] - 프로그래머스 고득점 kit (0) | 2023.02.28 |