最大子数组问题

算法导论第四章分治的第一个例题:最大子数组问题


O ( n 2 ) O(n^2) O(n2)

暴力算法


O ( n l o g n ) O(nlogn) O(nlogn)

分治算法
将数组array[low..high]分为array[low..mid]array[mid+1..high]
最大子数组array[i..j]所在位置必然在如下三种情况里:
1.完全位于array[low..mid]
2.完全位于array[mid+1..high]
3.跨越mid (low<i<mid<j<high)

1,2为重复子问题
3即寻找i,j使array[i..mid]array[mid+1..j]分别最大 : O(n)级别

递归方程:
T ( n ) = 2 ∗ T ( n / 2 ) + O ( n ) T(n)=2*T(n/2)+O(n) T(n)=2T(n/2)+O(n)
复杂度即 O ( n l o g n ) O(nlogn) O(nlogn)


O ( n ) O(n) O(n)

线性算法
推荐一个非常棒的博客:最大子数组的和问题–线性算法


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值