计算机算法设计与分析第二章思维导图&&知识点总结

本文详细解读计算机算法设计与分析中的递归概念,涵盖阶乘、Fibonacci数列、分治法(如二分搜索、矩阵乘法、棋盘覆盖、排序算法等)及其实例。深入探讨分治法的特征和应用范例,如快速排序、选择问题、最接近点对问题等,并剖析基于分治的算法复杂度分析。

复习链接

计算机算法设计与分析第一章思维导图
计算机算法设计与分析第二章思维导图&&知识点总结
计算机算法设计与分析第三章思维导图&&知识点总结
计算机算法设计与分析第四章思维导图&&知识点总结
计算机算法设计与分析第五章思维导图&&知识点总结 ( 初稿 )
计算机算法设计与分析第六章思维导图&&知识点总结 ( 初稿 )
计算机算法设计与分析第七章思维导图&&知识点总结 ( 初稿 )

思维导图

在这里插入图片描述
注:导图中的主定理模糊不清,可移步本文最下方观看清楚版。

递归的概念

直接或间接地调用自身的算法成为递归算法。
用函数自身给出定义的函数成为递归函数

递归实例

阶乘函数
Fibonacci数列
Ackerman函数
排列问题
整数划分问题
汉诺塔问题

分治法的基本思想

将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。递归地解决这些子问题,然后将各子问题合并得到原问题的解。

分治法特征:

  1. 该问题的规模缩小到一定的程度就可以容易地解决
  2. 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质。
  3. 利用该问题分解出的子问题的解可以合并为该问题的解;
  4. 该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。

分治范例

二分搜索技术

基本思想:

将n个元素分成个数大致相同的两半,取a[n/2]与x作比较。如果x=a[n/2],则找到x,算法终止;如果x<a[n/2],则只在数组a的左半部继续搜索x;如果x>a[n/2],则只在数组a的右半部继续搜索x。
二分搜索技术充分利用了元素间的次序关系,采用分治策略,可最坏用 O ( l o g n ) O(logn) O(logn)时间完成搜索任务。

大整数的乘法

基本思想:

将n位的X,Y各自都分成2段,每段长n/2位(假设n为2的幂次),即 X = A ∗ 1 0 n / 2 + B X=A*10^{n/2}+B X=A10n/2+B Y = C ∗ 1 0 n / 2 + D Y=C*10^{n/2}+D Y=C10n/2+D,则 X Y = A C ∗ 1 0 n + 1 0 n / 2 ∗ ( ( A − B ) ∗ ( D − C ) + A C + B D ) + B D XY=AC*10^n+10^{n/2}*((A-B)*(D-C)+AC+BD)+BD XY=A

评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值