二分查找(封装函数)

引入头文件,封装一个查找函数,这个通过下标来进行寻找,可以大大减少遍历次数

797b2debb15943dab3ce57e02677ae77.png

 最后写出main函数返回函数的输出值并打印

bcf204d8c3d54af5ba6db558fe4b0e5b.png

最后便能找到我们要的值了

9b16839811f741ae89ea034d4bb33089.jpg 

分享就到这里,谢谢大家! 

封装函数实现有序数组(如整数数组)中的二分查找通常涉及以下几个步骤: 1. **函数声明**:首先定义一个名为`binarySearch`的函数,接受两个参数:一个已排序的数组`arr`和一个目标值`target`,以及一个可选的返回值类型(例如`int`),用于记录查找次数。 ```python def binarySearch(arr: List[int], target: int) -> int: ``` 2. **初始化查找次数**:在函数内部,创建一个变量`count`并将其初始值设为0,这将用于计数查找操作。 3. **循环结构**:使用一个while循环,只要数组范围未缩小到0,就继续搜索。每次循环都会将`count`加一。 4. **中间元素计算**:找到数组中间的索引`mid`,通过数组长度的一半来实现。 5. **比较条件**:如果目标值等于中间元素,则返回当前的查找次数。如果不是,根据目标值与中间元素的大小关系决定是在左半部分还是右半部分递归地进行查找。 6. **更新范围**:如果目标值小于中间元素,说明它应该在左半边;反之,在右半边。更新数组范围以便下一次搜索。 7. **跳出循环**:当目标值不在数组范围内(即,左边界大于右边界),退出循环,并返回查找次数作为结果。 以下是完整的Python实现: ```python from typing import List def binarySearch(arr: List[int], target: int) -> int: count = 0 left, right = 0, len(arr) - 1 while left <= right: count += 1 mid = (left + right) // 2 if arr[mid] == target: return count elif arr[mid] < target: left = mid + 1 else: right = mid - 1 return count # 如果没找到,返回查找次数 # 示例 arr = [1, 3, 5, 7, 9] target = 5 search_count = binarySearch(arr, target) print(f"查找次数: {search_count}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值