算法题每日一练----快速写二分法排序

本文详细解析了二分查找算法的实现原理,包括迭代和递归两种方式,以及如何在有序数列中高效查找目标值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说下我对于二分法查找的理解:【和猜数字游戏差不多】

要在一个有序数列中找到一个与对应给定数字。

1、找到有序数列中最中间的数字

2、若中间值大于给定值,则在左边数列重新二分查找

3、若中间值小于给定值,则在右边数列重新二分查找

4、若都不存在,则返回‘没有对应的匹配值’

【索引思想】

1、设置最大和最小索引,找到中间索引值

2、若中间索引值大于给定值,则中间索引位置前一位变为最大索引位置,最小索引位为0;

3、若中间索引值小于给定值,则中间索引位置下一位变为最小索引位置,最大索引位不变;

4、若都不存在,则返回‘没有对应的匹配值’

def searchBinary(arr, number):
    low = 0
    height = len(arr)-1
    while low <= height:
        mid = int((low+height)/2)
        if arr[mid] > number:
            height = mid-1
        elif arr[mid] < number:
            low = mid+1
        else:
            return mid
    return '没有匹配值'

递归思想

def searchBinary(arr, number,low,height):
    if low <= height:
        mid = int((low+height)/2)
        if arr[mid] == number:
            return mid
        elif arr[mid] >= number:
            return searchBinary(arr, number, 0, mid-1)
        else:
            return searchBinary(arr, number, mid+1, height)
    else:
        return '没有匹配'

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值