您的位置:首页 > 编程语言 > Python开发

使用Python实现折半查找有序列表中的某个元素

2019-08-07 19:52 225 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/cute_boy_/article/details/98779237
# 子问题算法(子问题规模为 1)
def is_in_list(init_list, el):
return [False, True][init_list[0] == el]
# 分治法
def solve(init_list, el):
n = len(init_list)
if n == 1: # 若问题规模等于 1,直接解决
return is_in_list(init_list, el)
# 分解(子问题规模为 n/2)
left_list, right_list = init_list[:n // 2], init_list[n // 2:]
# 递归(树),分治,合并(此处为深度优先,注意逻辑短路)
res = solve(left_list, el) or solve(right_list, el)
return res
if __name__ == "__main__":
# 测试数据
test_list = [12, 2, 23, 45, 67, 3, 2, 4, 45, 63, 24, 23]
# 查找
print(solve(test_list, 45)) # True
print(solve(test_list, 5)) # False
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: