最大连续子序列之和问题是用来分析时间复杂度的很好的例子,这里简要分析和记述下整个过程。
{ 3,4,-2,1,-5,-2,5}
{-2,7,4,11,-2,-8,12,1}
{-2,7,4,11,-2,-8,12,1,-3}
{ 3,-2,7,4,11,-2,-8,12,1,-3}
{-2,1,-2,3,-2,7,4,11,-2,-8,12,1,-3}
{-2,1,-2,3,-2,7,4,-11,-2,-8,-13,1,-3}
{-2,-1,-2,-3,-2,-7,-4,-11,-2,-8,-13,-1,-3}
假设有以上这些测试数据,可以很轻易的用肉眼找出它们的最大连续子序列,下面我们来设计算法,实现计算机的识别和计算过程。
首先你能想到的方法是什么呢?
对!计算每种可能,也即总数为n的数据集合共有n!种可能。
max = array[0]
循环1:sum=array[next]
循环2:if sum>max 则 max = sum 且 sum+=array[next]
循环1每次循环都会去掉一个位于母