算法设计与分析第二章作业

软工2103李欣颖 2022-09-26 22:07:42

1.请以伪代码描述最大字段和的分治算法 

maxsum(int l,int r) 
    if l=r then return a[l] 
    mid<-(l+r)/2 
    lsum<-maxsum(l,mid) 
    rsum<-maxsum(mid+1,r) 
    sum1<-a[mid] 
    sum2<-a[mid+1] 
    sum<-sum1+sum2 
    if lsum>sum then sum<-lsum 
    if rsum>sum then sum<-rsum 
    return sum

2.分析该算法的时间复杂度

拆分子数组分别求得的最大子段和为sum1,sum2。时间复杂度为2T(N/2),从中心点向两边找最大的和,找到跨越的最大子段和的时间复杂度为O(n), 所以总体的时间复杂度为:T(n)=2T(n/2)+O(n) = O(nlogn)。

3.结合本章的学习,你对分治法的体会和思考

分治法的步骤:分解为子问题→求解子问题→合并子问题 

在我们的生活中,如果遇到了很困难的问题,那我们不妨把它们拆分出来,然后逐一击破,就不会那么困难了。

 

...全文
32 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

434

社区成员

发帖
与我相关
我的任务
社区描述
广东外语外贸大学信息科学与技术学院
算法 高校
社区管理员
  • brisksea
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧