首页 > 编程语言 > 详细

求最大子数组分析

时间:2015-03-08 15:35:00      阅读:220      评论:0      收藏:0      [点我收藏+]

第一种:

暴力枚举所有的子数组,然后比较选出最大,时间复杂度O(n^2)

 

第二种:

分治法,参见算法导论,时间复杂度O(nlogn)

 

第三种:

动态规划,时间复杂度O(n)

1、A[1..j+1]的最大子数组为:max{A[1..j] , A[i,j+1](1<=i<=j+1)最大值},用sum记录A[1..j]

 

2、A[i,j+1](1<=i<=j+1)最大值就是以A[j+1]结尾的最大子数组

设K[j+1]为以A[j+1]结尾的最大子数组,

K[j+1]=K[j]>0?A[j+1]+K[j]:A[j+1](以A[j+1]结尾的最大子数组肯定包含A[j+1],所以只需考虑是否包含其前面的K[j],如果K[j]>0则会包含)

 

求最大子数组分析

原文:http://www.cnblogs.com/littlebugfish/p/4321696.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!