-
이진 탐색 ( Binary Search )알고리즘/탐색 2021. 5. 2. 21:49
■ 이진 탐색
1) 정의 :
- 배열 전체의 중간값을 target 값과 비교
- 중간값이 target 값보다 크면 왼쪽 부분만 선택
- 왼쪽부분의 중간값을 다시 target 과 비교
■ 코드 구현
> plain 절차지향
def binary_search(m_list, target): m_list.sort() left = 0 right = len(m_list)-1 while left <= right: mid = (left+right)//2 if m_list[mid] == target: return True elif m_list[mid] > target: right = mid - 1 else: left = mid + 1 return False target = 25 m_list = [30, 94, 27, 92, 21, 37, 25, 47, 25, 53, 98, 19, 32, 32, 7] print(binary_search(m_list, target))
> 재귀
def binarySearch(array, target): left = 0 right = len(array) - 1 // sorting array.sort() middle_idx = (left+right)//2 middle = array[middle_idx] print(f'middle : {middle}') if target == middle: return True elif middle > target: return binarySearch(array[:middle_idx], target) elif middle < target: return binarySearch(array[middle_idx+1:], target) else: return False target = 25 m_list = [30, 94, 27, 92, 21, 37, 25, 47, 25, 53, 98, 19, 32, 32, 7] print(binarySearch(m_list,target))
참조 :
velog.io/@madfinger/Binary-Search%EC%9D%B4%EC%A7%84-%ED%83%90%EC%83%89-%ED%8C%8C%EC%9D%B4%EC%8D%AC
반응형'알고리즘 > 탐색' 카테고리의 다른 글
플로이드와샬 / 플로이드 - 와샬 (0) 2021.05.11 크루스칼 (0) 2021.05.10 다익스트라 (0) 2021.04.22 BFS / DFS (0) 2021.03.25 graph(map) 구현(python) (0) 2021.03.25