728x90
선형 탐색 알고리즘 (Linear Search Algorithm)
선형 탐색은 하는 값을 리스트의 맨 앞부터 끝까지 차례대로 찾아 나가는 것이다.
- 시간 복잡도 : O(n)
- 장점 : 검색 방법 중 가장 단순하여 구현이 쉽고 정렬되지 않은 리스트에도 사용 가능하다.
- 단점 : 검색 길이가 길면 비효율적이다.
def linear_search(element, some_list):
for i in range(len(some_list)):
if element == some_list[i]:
return i
return None
print(linear_search(2, [2, 3, 5, 7, 11]))
print(linear_search(0, [2, 3, 5, 7, 11]))
print(linear_search(5, [2, 3, 5, 7, 11]))
print(linear_search(3, [2, 3, 5, 7, 11]))
print(linear_search(11, [2, 3, 5, 7, 11]))
이진 탐색 알고리즘 (Binary Search Algorithm)
오름차순으로 정렬된 리스트에서 특정한 값의 위치를 찾는 알고리즘으로 임의의 중간값을 선택하여, 그 값과 찾고자 하는 값의 크고 작음을 비교하는 방식을 채택하는 것이다.
- 시간 복잡도 : O(log n)
- 장점 : 검색이 반복될 때마다 목표값을 찾을 확률은 두 배가 되므로 속도가 빠르다.
- 단점 : 정렬된 리스트에만 사용할 수 있다.
def binary_search(element, some_list):
start_index = 0
end_index = len(some_list) - 1
while start_index <= end_index:
mid_index = (start_index + end_index) // 2
if element == some_list[mid_index]:
return mid_index
elif element < some_list[mid_index]:
end_index = mid_index - 1
start_index = mid_index + 1
return None
print(binary_search(2, [2, 3, 5, 7, 11]))
print(binary_search(0, [2, 3, 5, 7, 11]))
print(binary_search(5, [2, 3, 5, 7, 11]))
print(binary_search(3, [2, 3, 5, 7, 11]))
print(binary_search(11, [2, 3, 5, 7, 11]))
참고 블로그
https://minimilab.tistory.com/44
파이썬 선형탐색(Linear Search), 이진탐색(Binary Search)
선형 탐색(Linear Search) 리스트의 처음부터 끝까지 순서대로 하나씩 탐색을 진행하는 알고리즘 def linear_search(element, some_list): for i in range(len(some_list)): if element == some_list[i]: return i return None print(linear
minimilab.tistory.com
https://baek.dev/til/algorithm/binary-search
알고리즘 - 선형 탐색 vs 이진 탐색 | 아웃풋 트레이닝
선형 탐색, 이진 탐색, 이진 탐색 트리
baek.dev
728x90
'Study > Computer Science' 카테고리의 다른 글
컴퓨터 구조 - 명령어의 구조 (0) | 2023.07.02 |
---|---|
컴퓨터 구조 - 소스 코드와 명령어 (0) | 2023.07.02 |
컴퓨터 구조 - 0과 1로 숫자를 표현하는 방법 (0) | 2023.07.01 |
컴퓨터 구조 - 컴퓨터 구조의 4가지 핵심 부품 (0) | 2023.07.01 |
운영체제 개요(1) - 운영체제 정의, 목적, 기능 (0) | 2023.05.30 |