Python 二分查找
二分搜索是一种在有序数组中查找特定元素的搜索算法。
搜索过程中从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,并且跟开始一样,从中间元素开始比较。
当数组为空时,表示找不到。这种搜索算法每次比较都使范围缩小一半。
# 返回 x 在 arr 中的索引,如果不存在返回 -1
def binarySearch(arr, s, e, x):
if e >= s:
mid = int(s + (e-s)/2)
if arr[mid] == x: # 元素是中间位置
return mid
elif arr[mid] > x:
return binarySearch(arr, s, mid-1, x) # 元素小于中间位置
else:
return binarySearch(arr, mid+1, e, x) # 元素大于中间位置
else: # 不在数组中
return -1
arr = [2, 3, 4, 10, 40]
x = 10
result = binarySearch(arr, 0, len(arr)-1, x)
print(result)
输出结果:
3
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)