# -*- 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
"""二分查找的遞歸實現(xiàn)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
查找(二分查找)
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來斗搞,“玉大人指攒,你說我怎么就攤上這事∑Х伲” “怎么了允悦?”我有些...
- 正文 為了忘掉前任全闷,我火速辦了婚禮,結果婚禮上萍启,老公的妹妹穿的比我還像新娘总珠。我一直安慰自己屏鳍,他們只是感情好,可當我...
- 文/花漫 我一把揭開白布局服。 她就那樣靜靜地躺著钓瞭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪腌逢。 梳的紋絲不亂的頭發(fā)上降淮,一...
- 文/蒼蘭香墨 我猛地睜開眼妒蔚,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了月弛?” 一聲冷哼從身側響起肴盏,我...
- 正文 年R本政府宣布前弯,位于F島的核電站蚪缀,受9級特大地震影響,放射性物質發(fā)生泄漏博杖。R本人自食惡果不足惜椿胯,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望剃根。 院中可真熱鬧哩盲,春花似錦、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至抒线,卻和暖如春班巩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嘶炭。 一陣腳步聲響...