def binary_search(arr, target):
low, high = 0, len(arr) - 1
while low <= high:
mid = (low + high) // 2
print(f"current range: {low+1}부터 {high+1}")
print(f"current mid: {arr[mid]}")
if arr[mid] == target:
return mid
elif arr[mid] < target:
print(f"target {target} is bigger than {arr[mid]}.")
low = mid + 1
elif arr[mid] > target:
print(f"target {target} is smaller than {arr[mid]}.")
high = mid - 1
else:
return -1
numbers = [str(i) for i in range(1, 101)]
target_number = input("Enter the numbe: ")
index = binary_search(numbers, target_number)
if index != -1:
print(f"Found {target_number}! ")
else:
print(f"{target_number} not found.")
如果输入1到100以外的数字,二分查找就无法再进行下去,所以我想返回-1并显示代码的最后一行。 但事实并非如此。我不知道问题是什么。 帮助!!谢谢你
希望这有帮助
def binary_search(arr, target):
low, high = 0, len(arr) - 1
while low <= high:
mid = (low + high) // 2
print(f"current range: {low+1}부터 {high+1}")
print(f"current mid: {arr[mid]}")
if (
mid == len(arr) - 1 and
arr[mid] != target
):
return -1
if arr[mid] == target:
return mid
elif arr[mid] < target:
print(f"target {target} is bigger than {arr[mid]}.")
low = mid + 1
elif arr[mid] > target:
print(f"target {target} is smaller than {arr[mid]}.")
high = mid - 1
else:
return -1
你也将这个nums设置为字符串,我改为整数
numbers = [i for i in range(1, 101)]