数据结构Python版---二分查找(Day1)

文章介绍了二分查找算法的基本原理,即通过不断将搜索区间分为两半来寻找目标值。在给定的有序数组中,通过比较中间元素与目标值,不断调整搜索范围,直到找到目标值或搜索区间为空。还提供了一个示例代码,展示了如何在Python中实现二分查找算法。
摘要由CSDN通过智能技术生成

1.1 ⭐算法原理

二分查找原理:将数组分成两半,如果目标值小于数组中间的元素,则在左半部分继续搜索,否则在右半部分搜索,直到找到目标值或者搜索区间为空

*数组下标都是从0开始的。
*数组内存空间的地址是连续的

因为数组的在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要移动其他元素的地址。
在这里插入图片描述

1.2 🦊二分查找示例

示例 1:
输入: nums = [-1,0,3,5,9,12], target = 9
输出: 4
解释: 9 出现在 nums 中并且下标为 4

def search(nums, target):
    left, right = 0, len(nums) - 1     #  left = 0, right = len(nums) - 1
    while left <= right:
        mid = (left + right) // 2      #  整除符号“//”可以保证结果为整数,而不是浮点数
        if nums[mid] == target:
            return mid
        elif nums[mid] < target:
            left = mid + 1
        else:
            right = mid - 1
    return -1

执行步骤

① 左端点为0,右端点为5:left=0,right=5

② 计算中间元素的下标mid,由于left和right的和是偶数,所以mid有两种可能,我们选择左边的那个作为mid:mid=2。(对mid=2.5取整)

③ 发现nums[mid]=3 < target=9,所以目标值可能在mid的右边

④ 于是我们将搜索区间缩小为右半部分,即将左端点left设置为mid+1,变为left=mid+1=3,右端点right不变,仍为5

⑤ 我们再次计算中间元素的下标mid,由于left和right的和是奇数,所以mid只有一种可能,mid=4

⑥ 我们比较mid处的元素nums[mid]与目标值target的大小,发现nums[mid]=9等于目标值target,因此找到了目标值,返回mid=4

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

圆嘟嘟2019

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值