1. 선형 탐색 ( Linear Search )
소요 시간 : O(n)
리스트의 길이에 비례하는 시간이 소요됩니다.
def solution(L, x):
for i in range(len(L)):
if x == L[i]:
return i
return -1
L1 = [3,5,2,8,6,1,7]
x = 2
y = 7
print(solution(L1, x))
print(solution(L1, y))
2. 이진 탐색 ( Binary Search )
소요 시간 : O(log n)
한 번 비교가 일어날 때마다 탐색 대상 데이터를 반씩 줄입니다.
( devide & conquer )
정렬된 리스트에서 탐색하는 경우에만 사용 가능
def solution(L,x):
upper = len(L) - 1
lower = 0
while upper >= lower:
mid = (upper + lower) // 2
if x == L[mid]:
return mid
elif x < L[mid]:
upper = mid - 1
else:
lower = mid + 1
return -1
L1 = [1,3,5,7,9,11]
x1 = 3
x2 = 7
print(solution(L1, x1))
print(solution(L1, x2))
'이론 Study > 알고리즘' 카테고리의 다른 글
[Python][알고리즘] 재귀 알고리즘 - 응용 (0) | 2020.07.14 |
---|---|
[Python][알고리즘] 재귀 알고리즘 - 기초 (0) | 2020.07.14 |
[코딩테스트][Python3] 재귀 알고리즘 (Recursive Algorithms) 기초&응용 - 피보나치 순열 함수 만들기 (0) | 2020.07.08 |