정구리의 우주정복
[알고리즘 기초] 이진 검색 ( binary search algorithm) 본문
반응형
#코드는 공부용으로 구현해본거라 틀릴수도있음
## 파이썬
이진검색이란 ?
자료 가운데 항목의 키값과 비교해서 다음 검색 위치를 결정해서 검색하는 방식 ( 무조건 정렬된 형태여야한다)
검색 범위를 반으로 줄여가며 빠르게 검색할 수 있다 (O(logN) 으로 순차보다 빠르다
과정 :
1, 자료 중앙의 원소를 선택
2, 중앙값과 목표값을 비교
3, 목표값 < 중앙값 : 자료의 왼쪽 반에 대해서 새로 검색을 수행
목표값 > 중앙값 : 자료의 오른쪽 반에 대해서 새로 검색을 수행
값을 찾을때까지 반복
#이진검색
def solution(L,x):
lower = 0
upper = len(L)-1
while lower <= upper:
middle = (lower+upper) //2 #중간값
if L[middle] == x:
return middle
elif L[middle] < x :
lower = middle +1
elif L[middle] > x :
upper = middle -1
return -1
L = [1,2,3,4,5,6,7,8,9]
x=8
print(solution(L,x))
반응형
'ALGORITHM > BASIC' 카테고리의 다른 글
[알고리즘 기초] 브루트포스 (Brute-force) (0) | 2020.05.14 |
---|---|
[알고리즘 기초] 선택 정렬 (selection sort) (0) | 2020.05.10 |
[알고리즘 기초] 순차 검색 (sequental search) (0) | 2020.05.10 |
[알고리즘 기초] 파이썬 부분집합 알고리즘 (비트연산자) (0) | 2020.05.09 |
[알고리즘 기초] 버블 정렬 (Bubble Sort) (0) | 2020.05.08 |
Comments