编写程序,实现对单调递增的整形序列中(如随机产生10个1~100之间的不重复整数序列),进行折半查找。用折半查找法找出一个数是数组中第几个元素,如果找到,则返回其下标,如果该数不在数组中,则返回-1 用Python写代码
时间: 2024-09-13 18:07:13 浏览: 51
在Python中实现对一个单调递增的整数序列进行折半查找(也称为二分查找)的示例代码如下:
```python
def binary_search(arr, target):
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid # 找到目标值,返回其在数组中的下标
elif arr[mid] < target:
left = mid + 1 # 目标值在右侧子序列
else:
right = mid - 1 # 目标值在左侧子序列
return -1 # 未找到目标值,返回-1
# 示例:生成一个单调递增的整数序列
import random
arr = sorted(random.sample(range(1, 101), 10)) # 随机产生10个1~100之间的不重复整数序列
print("生成的数组为:", arr)
# 选择一个数进行查找
target = 50 # 假设我们要查找的数是50
index = binary_search(arr, target)
if index != -1:
print(f"数{target}是数组中的第{index + 1}个元素。")
else:
print(f"数{target}不在数组中。")
```
这段代码首先定义了一个二分查找的函数`binary_search`,该函数接受一个已排序的数组`arr`和要查找的目标值`target`作为参数。如果在数组中找到了目标值,则返回它的下标;如果没有找到,则返回-1。
然后,我们使用`random.sample`函数生成了一个包含10个不同整数的随机列表,并用`sorted`函数将其排序。之后,我们通过调用`binary_search`函数来查找目标值在数组中的位置。
阅读全文