이 코드를보고하십시오 : 이진 검색은
def chop(array, search):
lo = 0
high = len(array) - 1
while lo <= high:
mid = (high + lo) /2
if array[mid] == search:
return 'true'
elif search > array[mid]:
low = mid + 1
else:
high = mid - 1
return 'false'
if __name__ == '__main__':
a = [1,2,3,4,5,6,7,8,9,10]
print chop(a, 3)
나는 배열에 번호를 검색하도록되어이 작은 스크립트 작성 - 일반 이진 검색을. 그래서 저는 스크립트를 실행합니다. 예를 들어
chop(a, 1)
을 넣을 때, 나는 넣습니다. 실제로는
chop(a, 2)
을 넣었습니다.
chop(a, 3)
을 입력하면 파이썬 쉘에서 빈 줄이 생깁니다.
아무도 무슨 일이 일어나고 있는지 아이디어가 있습니까?
low = mid + 1
귀하의 while 루프 변수 lo
사용하고, 당신은 당신의 while 루프 내에서 low
라는 새 변수를 정의하고 있습니다 :이 같은데요
''사실 ''거짓 ''입니까? ['True' 및'False' (http://docs.python.org/library/stdtypes.html#boolean-values)는 어떻습니까? – huon
mid = 1 일 때 이진 검색이 지연됩니다. 루프 내에서 mid 값을 인쇄 해보십시오. –
bisect 모듈에 비슷한 기능이 있습니다. –