最大次大值问题发现网上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)