defbinary_search(array,target,start,end):ifstart>end:returnNonemid=(start+end)//2#찾은 경우 중간점 인덱스 반환ifarray[mid]==target:returnmid#중간점의 값보다 찾고자 하는 값이 작은 경우 왼쪽 확인elifarray[mid]>target:returnbinary_search(array,target,start,mid-1)#중간점의 값보다 찾고자 하는 값이 크다면 오른쪽 확인else:returnbinary_search(array,target,mid+1,end)result=binary_search(array,target,0,n-1)ifresult==None:print("원소가 존재하지 않습니다.")else:print(result+1)
그리고 알아두면 좋은 라이브러리로 bisect 이 있다.
bisect_left(a,x): 정렬된 순서를 유지하면서 배열 a에 x를 삽입할 가장 왼쪽 인덱스를 반환.
bisect_right(a,x): 정렬된 순서를 유지하면서 배열 a에 x를 삽입할 가장 오른쪽 인덱스를 반환.