《数据结构与算法分析-C语言描述》第二章部分习题思路

第24页取幂算法6c情况的时间度分析

2.10
运行时间为O(N)

2.11
用对分方法计算,大致思路如下,没有考虑奇数、偶数的

2.12
a、求一个序列的最小子序列和。
思路和第二章的求子序列的最大值的基本相同,但是要先计算出所有序列的和,然后作比较。其实我觉得这个思路还可以这样考虑:
下面这个算法还是采用对分查找,时间复杂度应该是O(NlogN)

这种想法可以吗?
另外还有一种算法:
如果有一个序列,有n个元素,前m个元素的和为A,后n-m个元素的和为B,n个元素的总和为C,那么必然有A+B=C
然后如果A>C,那么必然B<C。所以如果A+B的和是一定,那么当A最大时,则B最小。那么求出了子序列最大和A,用C减就得到了最小的和B,这样用算法4的思路求子序列最大和,时间复杂度为o(N),再用序列和减去最大和,就得到最小和,并且时间复杂度为o(N)

错误!
因为这样得到的可能不是子序列,不是由连续的元素计算出的和

b、求最小的正子序列和

你可能感兴趣的:(算法)