Python中如何使用二分法快速查找数据

liftword1个月前 (03-28)技术文章15

平时我们会经常找东西,东西少,随便找下就可以找到了,当东西很多很多的时候,找起来就要花大量的时间。假如你平时摆放的东西很整齐、很有规律,那就方便多了,如果你对所有的东西都编号标记,那可能一下就找出来了。

下午我们通过二分发去,2个间的东西先查找一个房间,找不到再到另外一个房间去找,如果找到了是不是不用所有的找一遍了。我们还可以进一步 把一个房间分成2个小堆,甚至更小的单元,大大减少了查找次数(log n),提高的我们的效率,有的朋友会说,我就一点东西一眼就看到了,我们是基于数据很庞大的情况下,比如图书管理,通过编号,利用算法查询到在什么位置,那么直接去拿就好了

还是直接给代码吧。

def binary_search(arr, target):#定义一个查找函数

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 # 未找到

arr = [1, 3, 5, 7, 9, 11] # 示例:在有序数组中查找数字

target = 7 #定义一个目标,这里为了方便,实际很多情况下是要输入的

index = binary_search(arr, target)

if index != -1:

print(f"你找的目标是 {target} ,索引是 {index}")

else:

print("未找到目标")

二分查找结果

多练习,多出问题,多积累。

相关文章

Python 算法 01--二分查找

猜数游戏在程序中预设一个 0-9 之间的整数,让用户通过键盘输入所猜的数,如果大于预设的数,显示 “遗憾,太大了”;小于预设的数,显示 “遗憾,太小了”如此循环,直至猜中该数,显示 “预测 N 次,你...

玩蛇(Python) - 算法:二分查找(Binary Search)

一、二分查找算法介绍二分查找(Binary Search)也称为折半查找,如果一个查找问题能够用一个条件消除一半的查找区域,那么就对目标在特定空间搜索,从而减少查找空间。它是一种在有序数组中查找某一特...

【程序员常用十算法】二分查找法—5分钟掌握

【上期《ChatGPT写的vs我写的——快速排序算法》出来以后,有不少朋友都在感慨未来怎么办啊,是不是初级程序员这些岗位都可以被取代了?我觉得这是一体两面,可以理解为危机(被取代)、也可以理解为机遇(...

Python 常用算法:排序与查找

在 Python 编程的领域中,算法是解决各类问题的核心步骤与方法。排序和查找算法作为基础且常用的算法类型,在数据处理、搜索应用等诸多场景中发挥着关键作用。接下来,让我们深入了解几种常见的排序算法和查...

喂!这么强悍的五个python内置方法你到现在才说!

要说起python好用的库,那是多到说也说不完,不过很多都是第三方库。他们除了需要安装,其最麻烦的地方就是打包!很多时候,你可能打包不顺畅,就是因为其第三方库引用太多,依赖太多导致的。所以今天我们来隆...