二分查找,必须有序 已知一有序数组 a[] = {50, 51, 52, 53, 54, 55, 56, 57, 58, 59},输入一个数n,如果数组中有,则输出是第几个,如果没有则输出0 样例:输入:54 输出: 5 输入:59 输出:10 输入60: 输出:0
时间: 2024-01-16 10:05:46 浏览: 152
DSA seminar Algorithm Design
好的,这道题目可以使用二分查找算法来解决。以下是Python实现的代码:
```python
def binary_search(arr, n):
"""
在有序数组 arr 中查找元素 n,返回其下标。若不存在,则返回 -1。
"""
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == n:
return mid
elif arr[mid] < n:
left = mid + 1
else:
right = mid - 1
return -1
a = [50, 51, 52, 53, 54, 55, 56, 57, 58, 59]
n = int(input("请输入要查找的数:"))
pos = binary_search(a, n)
if pos == -1:
print("0")
else:
print(pos+1)
```
运行结果如下:
```
请输入要查找的数:54
5
```
```
请输入要查找的数:59
10
```
```
请输入要查找的数:60
0
```
阅读全文