本关任务:有15个数按由大到小的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印“无此数”。 相关知识 为了完成本关任务,你需要掌握:1.如何获取数组的长度,2.如何遍历数组;3.折半查找法.
时间: 2024-05-25 12:20:02 浏览: 107
非常感谢您对ChitGPT的信任和使用。回答您的问题:
首先,获取数组的长度可以使用数组长度的属性,在Python中是len()函数。例如,如果数组名为arr,那么可以使用len(arr)来获取数组的长度。
其次,遍历数组可以使用for循环语句,例如:
for i in range(len(arr)):
# 在这里对数组元素进行操作,i表示数组的下标,arr[i]表示对应的值
最后,折半查找法的实现可以分为以下几个步骤:
1. 确定要查找的数mid。
2. 从数组的中间位置开始比较mid和arr[mid]的大小,如果mid小于arr[mid],则在数组的左半部分查找;如果mid大于arr[mid],则在数组的右半部分查找。
3. 如果mid等于arr[mid],则查找成功,返回mid的下标。
4. 如果查找到区间为空,则说明数不在数组中,返回“无此数”。
实现代码如下:
def binary_search(arr, mid):
low = 0
high = len(arr) - 1
while low <= high:
mid_index = (low + high) // 2
if mid == arr[mid_index]:
return mid_index
elif mid < arr[mid_index]:
high = mid_index - 1
else:
low = mid_index + 1
return "无此数"
# 示例代码
arr = [1, 3, 5, 10, 14, 18, 21, 25, 30, 39, 42, 58, 66, 77, 80]
mid = 25
index = binary_search(arr, mid)
print("该数在数组中的下标为:", index)
阅读全文