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

计科2101郑玲 2022-09-25 15:29:48

 一分治法

      1、分治法思想的理解:

           分:将一个问题划分为同一类型规模相同的若干个子问题

           求:对若干个子问题求解,求解的方法一般使用递归

           合:合并子问题的解,得到原始问题的解

     2、归并排序最坏运行时间[递归式]的求解(代入法、递归树法、主方法)

最大字段与分治法

     1、用分治法求解最大字段和问题时,大致可分为三种情况

            最大字段和位于左边

            最大字段和位于右边

            最大字段和位于中间

     2、解决方案:

            第一种情况,递归求取左边,记录左端最大字段和

            第二种情况,递归求取右边,记录右端最大字段和

            第三种情况,位于中间时(即中间值包含在最大字段),取得中间值往左右两边分别相加,求得最大值

部分代码如下:

     3、分析时间复杂度

分解子问题时间复杂度为O(1),求解子问题时间复杂度为2T(n/2),合并子问题算法时间复杂度为O(1)。根据主定理T(n)=2T(n/2)+O(n),得到最后的时间复杂度为O(nlogn).

三、对分治法的体会和思考

分治法实质上是把一个复杂的大问题,分解为许多相同规模的小问题,对小问题求解再合并就能求得的大问题的解。拆分与求解的过程往往会用到递归,分治法中比较重要的方面是递归,递归的使用也会让代码易懂和简洁,但是递归终止的情况需要考虑全面。

 

 

 

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

434

社区成员

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

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