def bisect_search_left(arr, target):
res = 0
left, right = 0, len(arr) - 1
while left <= right: # 重点
mid = (right + left) // 2
if arr[mid] >= target:
# target 在 mid 的左边
res = mid
right = mid - 1
else:
left = mid + 1
return res
def bisect_search_right(arr, target):
res = 0
left, right = 0, len(arr) - 1
while left <= right: # 重点
mid = (right + left) // 2
if arr[mid] <= target:
# target 在 mid 的右边
res = mid
left = mid + 1
else:
right = mid - 1
return res
a = [1,2,2,2,2,3,3,3,7,10]
print(bisect_search_left(a, 2))
print(bisect_search_right(a, 2))
print(bisect_search_left(a, 3))
print(bisect_search_right(a, 3))
最左边和最右边的二分搜索python实现
最新推荐文章于 2025-12-09 19:50:25 发布
文章提供了两个Python函数,`bisect_search_left`和`bisect_search_right`,分别用于在排序数组中找到目标值的左侧和右侧边界。它们使用了二分查找算法,通过不断调整中间索引mid,直到找到目标值的位置或者确定其不存在的区间。
部署运行你感兴趣的模型镜像
您可能感兴趣的与本文相关的镜像
Python3.10
Conda
Python
Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

779

被折叠的 条评论
为什么被折叠?



