Python算法详解
上QQ阅读APP看书,第一时间看更新

3.3.3 实践演练——判断某个元素是否在列表中

下面的实例文件qi.py演示了使用分治算法判断某个元素是否在列表中的过程。

源码路径:daima\第3章\qi.py

# 子问题算法(子问题规模为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

执行后会输出:

True
False