Python实现二分查找算法

Posted 算法与编程之美

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python实现二分查找算法相关的知识,希望对你有一定的参考价值。


二分查找是基础算法的一种,有利于我们提高查找效率。

问题


给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
示列1:
输入:nums = [-1, 0, 3, 5, 9, 12, 54, 60, 100], target = 9
输出:4
示例2:
输入:nums = [-1, 0, 3, 5, 12, 54, 60, 100], target = 9
输出:-1

方法


应为该数组为升序数组。首先,设l,r分别为该数组第一个下标和最后一个,在找到中间值的下标mid = (l + r)// 2,最后将其进行比较,最后找到要找的target。

def f(nums):
l, r = 0, len(nums) - 1
while l < r:
   mid = (l + r) // 2
   if nums[mid] >= target:
       r = mid
   else:
       l = mid + 1
return r

结语

这是最典型的二分查找的运用,二分查找对于类似问题可以提高效率,但二分查找只能用于有序排列的数组,不能对无序数组进行操作。

以上是关于Python实现二分查找算法的主要内容,如果未能解决你的问题,请参考以下文章

算法练习(二分查找/排序)

算法初步:二分查找

[算法模板]二分查找

python实现二分查找(折半查找)算法

学习数据结构笔记(15) --- [二分查找算法(非递归)]

python实现二分查找算法