Python 为什么我的逻辑不适用于二进制搜索程序?
我正在尝试使用Python创建我的Python 为什么我的逻辑不适用于二进制搜索程序?,python,while-loop,binary-search,Python,While Loop,Binary Search,我正在尝试使用Python创建我的二进制搜索程序。但每次我在循环过程中遇到的问题时。看起来我需要为每种情况设置break。但这会把我的逻辑搞得一团糟 请帮助我,如何摆脱这种情况: print("Enter your number of elements:") num = int(input()) array = [] print("Enter your %d elements" %num) for c in range(0, num): arrayNum = int(input())
二进制搜索
程序。但每次我在循环过程中遇到的问题时
。看起来我需要为每种情况设置break
。但这会把我的逻辑搞得一团糟
请帮助我,如何摆脱这种情况:
print("Enter your number of elements:")
num = int(input())
array = []
print("Enter your %d elements" %num)
for c in range(0, num):
arrayNum = int(input())
#Use "append" concept under array into python.
array.append(arrayNum)
print("Enter a value which you want to find: ")
search = int(input())
first = int(0)
last = int(num-1)
middle = int((first + last)/2)
while first <= last:
if array[middle] < search:
first = int(middle+1)
elif array[middle] == search:
break
print("%d is found at location" % search, (middle+1))
else:
last = int(middle-1)
middle = int((first+last)/2)
if first > last:
print("%d is not present in list"%search)
print(“输入元素数:”)
num=int(输入())
数组=[]
打印(“输入%d个元素”%num)
对于范围(0,num)中的c:
arrayNum=int(输入())
#在python中使用数组下的“append”概念。
array.append(arrayNum)
打印(“输入要查找的值:”)
search=int(输入())
first=int(0)
last=int(num-1)
中间=整数((第一个+最后一个)/2)
而最后:
打印(“%d”不在列表“%search”中)
当我运行我的程序时,它看起来,而loop
仍在运行。请帮帮我
谢谢你的帮助 三个潜在问题-
array.sort()
在开始二进制搜索while循环之前执行此操作middle
的重新计算在else
块内,但是对于array[middle]
的情况,您也需要重新计算middle,更好的解决方案是将重新计算放在else块外,直接放在while
块内while first <= last:
if array[middle] < search:
first = int(middle+1)
elif array[middle] == search:
print("%d is found at location" % search, (middle+1))
break
else:
last = int(middle-1)
middle = int((first+last)/2)