0
클래스의 바이너리 검색을 만들고 있습니다.바이너리 검색 작은 오류 파이썬 3.5
값이 목록에 있는지 여부에 따라 True
또는 False
이 표시되어야합니다.
나는 오류없이 마지막 요소를 얻을 어차피, 내 코드 지금까지 :
def binarySearch(alist, value):
first = 0
last = len(alist)-1
found = False
while first <= last and not found:
midpoint = (first + last)//2
print(midpoint)
if value == midpoint:
found = True
else:
if value < alist[midpoint]:
last = midpoint-1
else:
first = midpoint+1
return found
print(binarySearch([1,2,3,4,5],5))
라인 : last = len(alist)-1
가리스트 내에서 마지막 요소를 인식하지 못하는 이유는 무엇입니까? 그것은 마지막에 하나 앞으로 간다. 그래서 위 코드를 실행했다면, True
을 돌려 줄 때 False
을 반환 할 것이다.
False
를 표시하는 것보다
IndexError
가 발생
5
보다 높은 번호를 검색하려고하는 경우에는 나에게 마지막 요소를 제공하는
last = len(alist)
을 시도했다.
아이디어가 있으십니까?
'렌 (alist) 목록의'반환 길이. 리스트의 마지막 요소를 원하면 'alist [len (alist) -1]'을 사용해야합니다. –
참고 : last len (alist) % 10은 매번 마지막 요소에 적용됩니다. –
또한 while 루프 조건을 '' '' '대신'first <= last '가 아니라'