专栏名称: 程序员鱼皮
鹅厂全栈开发,持续分享编程技法和实用项目
目录
相关文章推荐
DataEye短剧观察  ·  DataEye短剧热力榜:6部短剧播放超3亿 ... ·  昨天  
DataEye短剧观察  ·  DataEye短剧热力榜:6部短剧播放超3亿 ... ·  昨天  
河北青年报  ·  抖音、快手、微信同日宣布:下架! ·  3 天前  
徐州新闻  ·  抖音、快手同日宣布:下架! ·  3 天前  
51好读  ›  专栏  ›  程序员鱼皮

今日代码大赏 | Python 实现二分查找算法

程序员鱼皮  · 公众号  ·  · 2024-04-15 10:31

正文

编程领域,掌握算法不仅能够帮助我们解决问题,更能够提升我们解决问题的能力。

前两天,我们用 Java 实现了二分查找算法,为了确保所有使用不同编程语言的同学都能够学习并掌握这一重要算法。

且根据前两天的投票结果,发现投 Python 的同学最多,那么今天我们一起探索下用 Python 实现 — 二分查找算法。

有需要了解 Java 实现二分查找算法的同学,可点击下方标题直接跳转哦!

今日代码大赏 | Java 实现二分查找算法

下面是一个 Python 程序实现二分查找算法的示例代码:

def binary_search(nums, target):
    left, right = 0len(nums) - 1
    
    while left <= right:
        mid = (left + right) // 2
        if nums[mid] == target:
            return mid
        elif nums[mid]             left = mid + 1
        else:
            right = mid - 1
    
    return -1  # 如果没有找到目标元素,返回-1

# 示例数组和目标元素
nums = [13579111315171920]
target = 13

# 调用二分查找函数
index = binary_search(nums, target)

# 输出结果
if index != -1:
    print(f"元素 {target} 在数组中的索引是 {index}")
else:
    print(f"数组中没有找到元素 {target}")

运行上述程序,如果数组 nums 包含元素 13,输出结果将会是: 元素 13 在数组中的索引是 6

在这个例子中,我们首先定义了一个 binary_search 函数,它接受一个有序数组 nums 和一个目标值 target 作为参数。函数内部使用两个指针 left 和 right 来标识当前的搜索范围。通过计算中间索引 mid 并比较 nums[mid] 与 target 的大小,我们可以决定是继续在左半部分搜索,还是在右半部分搜索。这个过程会一直重复,直到找到目标元素或者搜索范围为空。

二分查找算法的时间复杂度为 O(log n),其中 n 是数组的长度。这使得二分查找在处理大型数据集时非常高效,并且 Python 的简洁语法让实现这个算法变得更加容易。

今天的代码大赏就到这里。希望通过这篇文章,你能够对二分查找算法在 Python 中的实现有一个更深入的理解。

如果你对算法感兴趣,或者想要了解更多不同语言实现的算法,欢迎在评论区留下自己的想法和建议。

完整代码片段来源于代码小抄,欢迎点击进入小程序阅读!

在线访问:https://www.codecopy.cn/post/ikolxt

在代码小抄可以看到更多优质代码,也欢迎大家积极分享,可能会获得我们官方的小礼品 🎁~

往期推荐

今日代码大赏 | Python 实现归并排序算法

今日代码大赏 | Java 实现二分查找算法







请到「今天看啥」查看全文