def binary_search(array, target, start, end):
if start > end:
return None
mid = (start+end)/2
# target을 찾은 경우 중간점의 인덱스를 반환
if array[mid] == target:
return mid
# 중간점의 값보다 찾고자 하는 값이 작은 경우 왼쪽 확인
elif array[mid] > target:
return binary_search(array,target,start,mid-1)
# 중간점의 값보다 찾고자 하는 값이 큰 경우 오른쪽 확인
else :
return binary_search(array,target,mid+1,end)
from bisect import bisect_left, bisect_right
a = [1, 2, 4, 4, 8]
x = 4
# 정렬된 순서를 유지하며 배열 a에 x를 삽입할 가장 왼쪽 인덱스를 반환
print(bisect_left(a,x))
# 정렬된 순서를 유지하며 배열 a에 x를 삽입할 가장 오른쪽 인덱스를 반환
print(bisect_right(a,x))
결과값 :
2
4