分治法——查找最大最小元素(Python)
程序员文章站
2022-05-12 17:28:14
...
# 基本子算法(子问题规模小于等于 2 时)
def get_max(max_list):
return max(max_list)
def get_min(min_list):
return min(min_list)
# 分治法 最小元素
def solve(init_list):
n = len(init_list)
if n <= 2: # 若问题规模小于等于 2,最终解决
return get_min(init_list)
# 分解(子问题规模为 2,最后一个可能为 1)
temp_list=(init_list[i:i+2] for i in range(0, n, 2))
# 分治,合并
min_list = list(map(get_min, temp_list))
# 递归(树)
return solve(min_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 = [13,4,11,5,67,7,9,43,24,2]
# 求最小最大值
print("最小元素:"+ str(solve(test_list))) # 2
print("最大元素:"+ str(solve2(test_list))) # 67
推荐阅读
-
【Python实践-5】使用迭代查找一个list中最小和最大值
-
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
-
如何从一个集合中找到n个最大或最小的元素?python
-
python使用分治法实现求解最大值的方法
-
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
-
【Python实践-5】使用迭代查找一个list中最小和最大值
-
python实现二叉查找数的查找最小值、最大值操作
-
分治法求最大和次大元素
-
分治法——查找最大最小元素(Python)
-
Python程序员面试算法宝典---解题总结: 第4章 数组 4.2 如何查找数组中元素的最大值和最小值