软件设计师-算法设计

算法设计

0.算法设计概述

* 有穷性
* 确定性
* 输入
* 输出
* 可行性

正确性,可读性,效率,低存储

影响一个算法运行时间的因素:

  1. 硬件的速度
  2. 书写程序的语言
  3. 编译程序所生成目标代码的质量
  4. 问题的规模
  • 时间复杂度
  • 空间复杂度

渐进时间复杂度表示

在这里插入图片描述
在这里插入图片描述

1.迭代法

从某个点除法,通过某种方式求出下一个点,使得其离要求的点(方程的解)更近一步;当两者之差接近到可接受的精度范围时,就认为找到了问题的解。

2.穷举搜索法

找出n个自然数(1,2,3,… n)中r个数的组合,这里假设r=3
在这里插入图片描述

3.递推法

编写程序,对给定的n(n<=100),计算并输入k的阶乘k!,(k=1,2,…n)的全部有效数字

简单 -----> 一般  
复杂 -----> 已知解

在这里插入图片描述

4.递归法

递推+回归:
编写计算斐波那契(Fibonacci)数列,数列大小为n。

在这里插入图片描述

5.分治法

  • 该问题的规模缩小到一定的程度就可以容易的解决

  • 该问题可以分解为若干个规模较小的相同问题

  • 利用该问题分解出的子问题的解可以合并为该问题的解

  • 该问题所分解出的各个子问题是相互独立的

  • 分解

  • 解决

  • 合并

二分查找法
在这里插入图片描述
汉诺塔问题:
在这里插入图片描述

6.动态规划法

  • 找出最优解的性质,并刻画其结构特征
  • 递归地定义最优质
  • 以自底向上的方式计算出最优值
  • 根据计算最优值时得到的信息,构造最优解

在这里插入图片描述
在这里插入图片描述

7.回溯法/试探法(通用解题法)广度优先

所有解:根节点的所有子树都搜索遍历
单个解:搜索到一个即可

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.贪婪法

在贪婪算法中采用逐步构造最优解的方法,在每个阶段,都做出一个**看上去**最优的决策(在一定的贪婪标准下),决策一旦做出,就不可再更改,做出贪婪决策的依据称为**贪婪准则**。
1.不必为了寻找最优解,穷尽所有解。因此时间较少
2.追求可行的解
3.贪婪法每一步最优解,整体未必最优。

在这里插入图片描述
任何一个编码不能是其他编码的开头,比如D的01
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

9. 分支界限法(广度优先/最小消耗)

  • 队列式分支界限法
  • 优先队列式分支界限法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10.概率算法

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值