-
bisect - binary search파이썬 Study/라이브러리 2021. 3. 19. 23:08
참조 :
programmers.co.kr/learn/courses/4008/lessons/13173
programming119.tistory.com/196
[Python] bisect 사용법👀 / 이분탐색 / 코딩테스트
bisect 는 이진 탐색을 쉽게 구현하게끔 해주는 함수입니다. 이진 탐색은 직접 코드로도 구현할 수 있지만, bisect 함수를 이용하여 구현 시간을 줄이고 편하게 사용할 수 있습니다. 예제 [0, 1, 2, 3, 4
programming119.tistory.com
파이썬을 파이썬답게 - 이진 탐색하기 - binary search
본 강의는 파이썬 문법을 이미 알고 있는 분들을 대상으로 만들어졌습니다. ##### 이런 분들께 추천합니다 * 파이썬 문법을 알고 계시는 분 * 알고리즘 문제를 조금 더 쉽게 풀고 싶은 분 * Python 코
programmers.co.kr
■ 이진탐색
1) 정의 :
- O(logN) 비례
> 원본 구현 방법
# python 공식 문서 ################# def bisect(a, x, lo=0, hi=None): if lo < 0: raise ValueError('lo must be non-negative') if hi is None: hi = len(a) while lo < hi: mid = (lo + hi) // 2 if a[mid] < x: lo = mid + 1 else: hi = mid return lo mylist = [1, 2, 3, 7, 9, 11, 33] print(bisect(mylist, 3)) # hard coding ################# def binary_search(target, data): data.sort() start = 0 end = len(data) - 1 while start <= end: mid = (start + end) // 2 if data[mid] == target: return mid # 함수를 끝내버린다. elif data[mid] < target: start = mid + 1 else: end = mid -1 return None
> bisect 함수
1) 사용 방법 :
bisect_left(literable, value) : 왼쪽 인덱스를 구하기 == 시작 index
bisect_right(literable, value) : 오른쪽 인덱스를 구하기 == 끝 index + 1 → bisect.bisect( ) 와 동일import bisect mylist = [1, 2, 3, 3, 7, 9, 11, 33] print(bisect.bisect_left(mylist, 3)) print(bisect.bisect(mylist, 3)) print(bisect.bisect_right(mylist, 3)) >>> 2 4 4
반응형