Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- shadowing
- normalization
- sidleup
- objective functions for machine learning
- scowl
- Excel
- 자료구조
- resample
- straightup
- non parametic softmax
- noise contrast estimation
- pulloff
- domain adaptation
- thresholding
- rest-api
- Knowledge Distillation
- 3d medical image
- model-free control
- freebooze
- REINFORCE
- Inorder Traversal
- checkitout
- clip intensity values
- Policy Gradient
- sample rows
- MRI
- Actor-Critic
- fastapi
- remove outliers
- loss functions
Archives
- Today
- Total
Let's Run Jinyeah
[Python] 이진탐색 본문
개념
- 배열 내부의 데이터가 정렬되어 있어야만 사용할 수 있는 알고리즘
- 찾으려는 데이터와 중간점 위치에 있는 데이터를 반복적으로 비교해서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색
- 한번 확인할 때마다 확인하는 원소의 개수가 절반씩 줄어든다는 점은 퀵 정렬과 비슷
- 단계마다 2로 나누는 것과 동일 - 시간복잡도 O(logN)
- 효율적으로 삽입 가능
구현
- 재귀
def binary_searcy(array, target, start, end):
if start > end:
return None
mid = (start+end) // 2
if array[mid] == target:
return mid
elif array[mid] > target:
return binary_search(array, target, start, mid-1)
else:
return binary_search(array, target, mid+1, end)
- 반복
def binary_search(array, target, start, end):
while start <= end:
mid = (start+end) // 2
if array[mid] == target:
return mid
elif array[mid] > target:
end = mid -1
else:
start = mid + 1
return None
참고
이것이 취업을 위한 코딩테스트이다
'Programming > Algorithm' 카테고리의 다른 글
[Python] list 원소의 모든 조합 구하기 (0) | 2021.11.17 |
---|---|
[Python] Data Structure - Tree (0) | 2021.10.19 |
[Python] 정렬 - 선택, 삽입, 퀵 (0) | 2021.10.14 |
[Python] 기본 탐색 - 완전탐색, DFS/BFS (0) | 2021.10.14 |
[Python] Graph 종류 및 구현 (0) | 2021.10.14 |
Comments