728x90
반응형
1. 순차 탐색(Sequential Search)
- 탐색은 여러 데이터 중에서 원하는 데이터를 찾아내는 것을 의미
- 데이터가 담겨있는 리스트를 앞에서부터 하나씩 비교해서 원하는 데이터를 찾는 방법

1. 이진 탐색(Binary Search)
- 탐색할 자료를 둘로 나누어 해당 데이터가 있을만한 곳을 탐색하는 방
1-1. 이진 탐색과 순차 탐색의 비교

2. 분할 정복 알고리즘과 이진 탐색
- 분할 정복 알고리즘
- divide : 문제를 하나 또는 둘 이상으로 나눔
- conquer : 나눠진 문제가 충분히 작고 해결이 가능하면 해결하고, 그렇지 않으면 다시 나눔
- 이진 탐색
- divide : 리스트를 두 개의 서브 리스트로 나눔
- conquer :
- 검색할 숫자 > 증가값 : 뒷 부분의 서브 리스트에서 검색힐 숫자를 찾음
- 검색할 숫자 < 증가값 : 앞 부분의 서브 리스트에서 검색힐 숫자를 찾음
3. 알고리즘 구현
- 이진 탐색은 데이터가 정렬되어 있는 상태에서 진행
- 예) 데이터가 [2,3,7,12,20] 일 때
- binary_search(data_list, find_data) 함수를 만듬
- data_list의 중간값을 find_data와 비교해서
- find_data < data_list의 중간값 : 맨 앞부터 data_list의 중간까지 find_data를 찾음
- find_data > data_list의 중간값 : data)list의 중간부터 맨 끝까지 data_data를 찾음
- 그렇지 않다면 data_lis 중간값은 find_data와 일

4 알고리즘 분석
- n개의 리스트를 매번 2로 나눠 1이 될 때까지 비교연산을 k회 진행
- n X 12 X 12 X 12 ... = 1
- n X 12k = 1
- n = 2k = log2n = log22k
- log2n = k
빅오표기법으로는 k+1의 결국 최종 시간 복잡도 O(logn)
반응형
'Python > 알고리즘&자료구조' 카테고리의 다른 글
Python 자료구조&알고리즘 - 분할 정복 (0) | 2023.02.22 |
---|---|
Python 자료구조&알고리즘 - 동적 계획법, 백준 11726번 (0) | 2023.02.21 |
Python 자료구조 & 알고리즘 - 재귀호출 (0) | 2023.02.21 |
Python 자료구조 & 알고리즘 - 정렬(버블, 삽입, 선택) (0) | 2023.02.21 |
Python 자료구조 & 알고리즘 - 복잡도 (0) | 2023.02.20 |