【发布时间】:2015-08-27 23:02:06
【问题描述】:
我有一个排序的数字列表,我需要让它返回数字出现的索引范围。我的清单是:
daysSick = [0, 0, 0, 0, 1, 2, 3, 3, 3, 4, 5, 5, 5, 6, 6, 11, 15, 24]
如果我搜索到 0,我需要返回 (0, 3)。现在我只能找到一个数字的位置!我知道如何进行二进制搜索,但我被困在如何让它从该位置上下移动以找到其他相同的值!
low = 0
high = len(daysSick) - 1
while low <= high :
mid = (low + high) // 2
if value < daysSick[mid]:
high = mid - 1
elif value > list[mid]:
low = mid + 1
else:
return mid
【问题讨论】:
-
你有什么理由不使用任何python函数吗?
-
@TerranceSeo, hg.python.org/cpython/file/2.7/Lib/bisect.py, bisect 模块源码包含简单的python二分函数方法
标签: python binary-search