二分法——Python实现

本文介绍了一种在有序列表中查找特定元素的二分查找算法。通过不断将搜索区间减半来提高查找效率,该算法首先确定中间元素,然后根据目标值与中间元素的比较结果缩小搜索范围,直至找到目标值或搜索区间为空。

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

def dichotomy(list1,target):
    length = len(list1)
    index_low = 0
    index_high = length - 1

    while index_low <= index_high:
        index_midle = int((index_low + index_high) / 2)
        guess = list1[index_midle]
        if guess == target:
            return index_midle
        elif guess > target:
            index_high = index_midle - 1
        elif guess < target:
            index_low = index_midle + 1
    return None

    
list_1 = [1,2,3,4,5,6,7,8,9]
target_1 =3
print(dichotomy(list_1,target_1))

### Python实现二分法的代码示例 以下是基于已有引用内容以及标准实现方法所提供的 Python 二分法代码示例: ```python def binary_search(arr, target): """ 使用二分查找法在已排序的列表中找到指定数的索引。 :param arr: 已排序的列表 :param target: 需要查找的目标数 :return: 目标数的索引,如果未找到则返回 -1 """ 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 if __name__ == "__main__": # 定义一个已排序的列表 sorted_list = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19] # 设定目标值 target = 9 # 调用函数进行查找 index = binary_search(sorted_list, target) if index != -1: print(f"目标数 {target} 在列表中的索引为: {index}") else: print(f"目标数 {target} 不在列表中") # 打印原始列表 print("列表:", sorted_list) ``` 上述代码实现了经典的二分查找算法。它通过不断缩小搜索范围来高效定位目标值的位置[^2]。需要注意的是,该算法的前提条件是输入数组必须已经按顺序排列(升序或降序),这是由二分法本身的特性决定的[^1]。 #### 关于二分法的特点说明 二分法是一种高效的查找技术,在最坏情况下时间复杂度仅为 \(O(\log n)\),远优于线性扫描的时间复杂度 \(O(n)\)[^1]。然而,其应用受限于数据结构的要求——即待查集合需预先完成排序操作。对于无序数据集,可能需要先执行一次排序过程,这会增加额外开销。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值