判断一个数是否是数组中的成员(用二分法查找)。数组a中有10个已排序的整数(由小到大排列)。从键盘上输入一个数,判断这个数是否是数组a中的数,如果是的话,打印出此数在数组a中的位置,否则打印“找不到”。 【实现提示】 ① 设待查找的数为x,设三个位置变量l、m、h分别代表查找范围的顶部、中间位置和底部,m=(l+h)/2,把数分成以a[m]为中点的两段范围; ② 判断x 是否等于a[m],假设是,则找到; ③ 假设大于a[m],则x必在后半段范围,即在a[m+1]至a[h]。舍弃前半段,再在后半段重新划分两段范围,定出l、m和h,重复以上步骤,逐步缩小查找范围。
时间: 2024-02-12 11:08:22 浏览: 50
leetcode无法登录-MedianOfTwoSortedArrays:双排序数组的中位数
好的,这是一个经典的二分查找算法。下面是实现代码:
```python
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 已排序的整数数组
x = int(input("请输入一个数:")) # 从键盘上输入待查找的数
l, h = 0, len(a) - 1 # 初始化查找范围的顶部和底部
while l <= h:
m = (l + h) // 2 # 取中间位置
if x == a[m]: # 如果查找成功
print("找到了,该数在数组中的位置是:", m)
break
elif x < a[m]: # 如果待查找的数小于中间数
h = m - 1 # 舍弃后半段
else: # 如果待查找的数大于中间数
l = m + 1 # 舍弃前半段
else:
print("找不到")
```
这里使用了 `while-else` 结构,当 while 循环正常结束时(即没有被 break 跳出),会执行 else 语句块。在这个例子中,如果找到了待查找的数,会执行 break 跳出循环,不执行 else 语句块;如果没有找到,会执行 else 语句块,打印出“找不到”。
阅读全文