- Python算法详解
- 张玲玲
- 251字
- 2020-06-27 17:50:51
3.3.2 实践演练——求顺序表中的最大值
为了说明分治算法的基本用法,接下来将通过一个具体实例的实现过程,详细讲解分治算法思想在编程中的基本应用。
下面的实例文件zuida.py演示了使用分治算法求顺序表中最大值的过程。
源码路径:daima\第3章\zuida.py
# 基本子算法(子问题规模小于或等于2 时) def get_max(max_list): return max(max_list) # 这里偷个懒! # 分治法 版本二 def solve2(init_list): n = len(init_list) if n <= 2: # 若问题规模小于或等于2,解决 return get_max(init_list) # 分解(子问题规模为n/2) left_list, right_list = init_list[:n // 2], init_list[n // 2:] # 递归(树),分治 left_max, right_max = solve2(left_list), solve2(right_list) # 合并 return get_max([left_max, right_max]) if __name__ == "__main__": # 测试数据 test_list = [12, 2, 23, 45, 67, 3, 2, 4, 45, 63, 24, 23] # 求最大值 print(solve2(test_list)) # 67
执行后会输出:
67