# -*- coding: utf-8 -*-
"""二分查找"""
def binary_search(array, value):
if not array:
return -1
begin = 0
end = len(array) - 1
while end >= begin:
mid = int((begin + end) / 2)
if array[mid] == value:
return value
elif array[mid] > value:
end = mid - 1
else:
begin = mid + 1
return -1
def test():
a = [i for i in range(100)]
assert binary_search(a, 32) == 32
assert binary_search(a, 0) == 0
assert binary_search(a, 109) == -1
"""二分查找的递归实现1"""
def binary_search_2(start, end, array, value):
if end > start:
mid = int((start + end) / 2)
if array[mid] == value:
return value
elif array[mid] > value:
return binary_search_2(start, mid - 1, array, value)
else:
return binary_search_2(mid + 1, end, array, value)
return -1
def test2():
a = list(range(100))
assert binary_search_2(0, len(a), a, 78) == 78
assert binary_search_2(0, len(a), a, 109) == -1
def binary_search3(array, value):
if len(array):
mid = int((0 + len(array)) / 2)
if array[mid] == value:
return value
elif array[mid] > value:
return binary_search3(array[0:mid + 1], value)
else:
return binary_search3(array[mid + 1:len(array)], value)
return -1
def test3():
a3 = list(range(100))
assert binary_search3(a3, 78) == 78
assert binary_search3(a3, 109) == -1
查找(二分查找)
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...