0. 여러분의 개발 공부에 도움이 되지 않는다.
1. 이분탐색 정의
- 정렬되어있는 배열 또는 리스트에서 탐색을 하는 방법
- 검색 범위를 절반씩 줄여 탐색하므로 빠르다.
2. 예시 코드
# 이분탐색 함수
def binary_search(sort_list, key):
pl = 0 # 리스트의 처음을 pl으로 잡는다.
pr = len(sort_list)-1 # 리스트의 마지막을 pr로 잡는다.
while True:
pc = (pl+pr) // 2 # 중간 수를 pc로 잡는다.(pr//2 로 하지 않은 이유는 아래를 보면 알 수 있다.)
if sort_list[pc] == key: # sort_list의 인덱스가 pc인 값과 Key가 같다면 바로찾음
return 1
elif sort_list[pc] < key: # sort_list의 인덱스가 pc인 값이 key보다 작다면 pc+1을 pl로 만든다.
pl = pc + 1
else: # sort_list의 인덱스가 pc인 값이 key보다 크다면 pc11을 pr로 만든다.
pr = pc - 1
if pl > pr: # pl과 pr이 교차되면 반복문 탈출
break
return 0 # 위 조건을 모두 만족 못한다면 없는거임
# 퀵 정렬 방식으로 N_list를 오름차순으로 정렬한다.
for element in M_list: # 처음 Input으로 받은 M_list의 element를 뽑아내 정렬된 sort_N 리스트를 이분법으로 조회한다.
print(binary_search(N_list, element))# 이분법 함수로 보냄
반응형
'Develop > Algorithm' 카테고리의 다른 글
[문제풀이]백준_2504_괄호의 값(스택_2, enumerate함수) (0) | 2022.10.04 |
---|---|
[스택]Stack 정리_1(with. 백준,9012, 괄호) (0) | 2022.10.02 |
[문제풀이]백준 2805 나무자르기 (0) | 2022.10.01 |
[문제풀이]백준 1920 수찾기 (0) | 2022.10.01 |
[정렬알고리즘]퀵정렬 및 변수 할당 개념(python) (0) | 2022.09.30 |