list = [1, 3, 5, 6, 9, 12, 18, 21, 39, 40, 41, 45, 48, 52, 55, 60, 66, 72, 81, 83, 88, 90, 98, 102]
def search(n, lower, upper):
"""
-----使用二分法寻找列表中的数字-----
:param list: 列表
:param n: 要寻找的数字
:param lower: 寻找范围下限 元素位置
:param upper: 寻找范围上限 元素位置
:return:
"""
if lower <= upper:
middle = (lower + upper) // 2 # 列表中中间位置
if n == list[middle]: # 如果寻找的值与中间位置的元素值相等。
print("找到了,在列表中的第", middle+1, "个")
return middle
if n > list[middle]: # 如果寻找的值大于中间位置的元素值。递归,对后半段列表继续二分
lower = middle+1 # 坑,若为middle-1,查找值不在列表中则会报超过最大递归次数
return search(n, lower, upper)
if n < list[middle]: # 如果寻找的值小于中间位置的元素值。递归,对前半段列表继续二分
upper = middle-1 #坑
return search(n, lower, upper)
else:
print("您寻找的数字不在此列表中")
return
ret = search(66, 0, len(list)-1)
使用递归实现二分法寻找列表中的数字
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...