-
[Python] 이진(이분)탐색 알고리즘Programming Language/Python 2021. 5. 7. 09:24
오늘 배운 내용 중 이진탐색 알고리즘에 대한 정리
이진탐색 알고리즘은 정렬된 상태로 이루어진 리스트에 대한 탐색임!
강사님이 일부 달아주신 주석에 추가적으로 복습하며 이해한 부분 주석처리하였음
123456789101112131415161718192021222324#이분(이진)탐색 (정렬이 되어 있는 경우 반 나눠서 탐색)def binary_search(arr, x): #x: 찾고자 하는 값start = 0end = len(arr) - 1while start <= end:mid = (start + end) // 2 # // 정수로 나눔. 따라서 끝의 절반으로 나누면 안됨. # 25 기준으로 작으면 앞 부분 절반, 크면 뒷 부분 절반if x == a[mid]: # 본인 이해: 예를들어 현재는 숫자 25번의 자리return midelif x > arr[mid]:start = mid + 1 # 찾고자 하는 값 x가 mid 보다 크다면 오른쪽으로 탐색else:end = mid - 1 # 찾고자 하는 값 x가 mid 보다 작다면 왼쪽으로 탐색return -1 # 찾지 못했을 땐 -1 반환d = [1, 4, 9, 16, 25, 36, 49, 64, 81] # 9개 숫자, 방번호 0부터 8. 9 나누기 2 -> 4. 따라서 4번째의 25가 mid.#25 기준으로 또 절반 나눔.print(binary_search(d, 36))print(binary_search(d, 50))cs 이해를 위해 아래 블로그 링크 참고하였는데, 짤로 만들어진 것 참고하면 좋을거 같다.
blog.naver.com/dnfla420/222093579890
작성일: 2021. 4. 23. 15:58
기존 블로그 글 이전일: 2021. 5. 7. 09:24
'Programming Language > Python' 카테고리의 다른 글
[백준 알고리즘] 11279번: 최대 힙(우선순위 큐) - Python (0) 2022.03.01 [Python] Dictionary(딕셔너리) 사용법 및 특징 (0) 2022.02.26 [Pycharm] PyCharm 폰트 사이즈 조절 (0) 2021.11.07 [Pycharm] PyCharm <-> Git 연동 방법 (0) 2021.11.06 [Python] split, map 함수 (여러 변수 동시에 입력 받기) (0) 2021.05.07