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

软工2202蔡宏济 2022级 2023-10-22 16:04:56

目录

 

1.伪代码

2.时间复杂度

3.对分治法的心得体会


1.伪代码

 MaxSum (int left, int right)

        if (left==right)  return a[right] //临界条件:相等返回

        mid=(left+right)/2    //取中间值

        Lsum=MaxSum(1,mid) //分为左右两个部分求最大字段和

        Rsum=MaxSum(mid+1,r)

        Sum1=a[mid]   Sum2=a[mid+1] //两部分数组

        Sum=Sum1+Sum2     //合并

        if(Lsum>sum)   sum=Lsum  //三者比较大小,返回最大值sum

        if(Rsum>sum)   sum=Rsum

        return sum

 

2.时间复杂度

T(n)=2T(n/2)+O(n) = O(nlogn) 时间复杂度为O(nlogn)

 

3.对分治法的心得体会

通过本章的学习,了解到分治法的基本思想是将一个规模为n的子问题分解为规模较小的子问题,这些问题与原问题相同,这样大大的提高了编写算法代码的效率。分治法的具体例子包括二分法,快速排序,归并排序…都是通过分解和合并(一些问题不用)进行解决问题的,这个算法思想的关键在于找出分解的临界条件以及分解的思路代码,从而更加清晰地去解决问题,同时结合递归,迭代等算法提高算法效率,总之分治法与后面的动态规划算法都是解决问题的重要算法设计思想。

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

434

社区成员

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

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