Python 分治+递归 求列表的最大值次大值

简介:

最大次大值问题发现网上Python版本的实现比较少,自己实现了一个

分治法很常见了,注意下分治包括了“分而治之”和“减而治之”,两者的目的都是为了减少问题的规模


递归,首先要考虑“递归基”,也就是递归的出口;

平凡方法,粗放的解释就是“可以一步就看出结果”的代码块;



def maxAndSubMax(seq):
	if len(seq) == 1:
		return seq[0], seq[0]
	if len(seq) == 2:
		if seq[0] > seq[1]:
			return seq[0], seq[1]
		else:
			return seq[1], seq[0]

	x1L, x2L = maxAndSubMax(seq[:len(seq)//2])
	x1R, x2R = maxAndSubMax(seq[len(seq)//2:])

	if x1L > x1R :
		if x2L > x1R:
			return x1L, x2L
		else:
			return x1L, x1R
	else:
		if x1L > x2R:
			return x1R, x1L
		else:
			return x1R, x2R 




if __name__ == '__main__':
	testlist = [1,3,56,7,8,10,9,8,45]
	print maxAndSubMax(testlist)


相关文章
|
22天前
|
Python
【python】爬楼梯—递归分析(超级详细)
【python】爬楼梯—递归分析(超级详细)
|
1天前
|
算法 数据挖掘 数据处理
使用 Python 循环创建多个列表
在Python中,动态创建多个列表对于数据处理和算法实现十分有用。本文介绍了四种方法:1) 列表推导式,如创建偶数和奇数列表;2) 使用循环和`append()`,示例为生成斐波那契数列;3) 结合字典与循环,按条件(如正负数)分组;4) 列表生成器,用于一次性生成多组随机数列表。这些方法有助于提高代码效率和可读性。
9 1
|
7天前
|
机器学习/深度学习 存储 测试技术
使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测
使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测
19 0
|
8天前
|
Python
python学习-函数模块,数据结构,字符串和列表(下)
python学习-函数模块,数据结构,字符串和列表
49 0
|
8天前
|
索引 容器
06-python数据容器-list列表定义/list的10个常用操作/列表的遍历/使用列表取出偶数
06-python数据容器-list列表定义/list的10个常用操作/列表的遍历/使用列表取出偶数
|
9天前
|
存储 索引 Python
python学习5-列表的创建、增删改查、排序
python学习5-列表的创建、增删改查、排序
|
15天前
|
索引 Python 容器
python 数据类型之列表
python 数据类型之列表
|
17天前
|
索引 Python
Python标准数据类型-List(列表)
Python标准数据类型-List(列表)
42 1
|
22天前
|
存储 Java 程序员
【Python】6. 基础语法(4) -- 列表+元组+字典篇
【Python】6. 基础语法(4) -- 列表+元组+字典篇
41 1
|
27天前
|
程序员 C语言 Python
Python列表推导式:简洁与高效的编程利器
在Python编程中,列表推导式(List Comprehension)是一种强大且优雅的工具,它允许我们以简洁的方式创建新的列表。列表推导式在Python程序员中广受欢迎,因为它能够将复杂的循环和条件语句简化为一行代码,提高代码的可读性和执行效率。