用二分法查找一个数是否在随机数列中
时间: 2023-07-16 16:13:22 浏览: 98
二分法是一种高效的查找算法,可以用于在有序数列中查找某个元素是否存在。对于随机数列,如果先进行排序,再使用二分法查找也是可行的。
下面是使用二分法查找一个数是否在随机数列中的示例代码(假设随机数列已经按照从小到大的顺序排好):
```python
import random
# 生成随机数列
nums = [random.randint(1, 100) for _ in range(10)]
nums.sort() # 排序
# 二分查找
def binary_search(nums, target):
left, right = 0, len(nums) - 1
while left <= right:
mid = (left + right) // 2
if nums[mid] == target:
return True
elif nums[mid] < target:
left = mid + 1
else:
right = mid - 1
return False
# 测试
target = random.randint(1, 100)
print("随机数列:", nums)
print("要查找的数:", target)
if binary_search(nums, target):
print("找到了!")
else:
print("没有找到。")
```
在上面的代码中,首先生成了一个长度为10的随机数列,并对它进行了排序。然后定义了一个二分查找函数`binary_search`,它接受两个参数:`nums`表示要查找的数列,`target`表示要查找的目标数。
在函数中,使用了两个指针`left`和`right`来表示查找范围的左右边界。在每一轮循环中,计算出中间位置`mid`,并与目标数进行比较。如果相等,则直接返回True,表示找到了目标数。如果中间数小于目标数,则说明目标数在右半部分,将左边界移动到mid+1;否则,将右边界移动到mid-1。
最后,如果整个循环结束后还没有找到目标数,则返回False,表示没有找到。
在测试时,先随机生成一个要查找的目标数,然后调用`binary_search`函数进行查找。如果返回True,则说明找到了目标数;否则,说明没有找到。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)