读书笔记 《算法导论》 C2

Chapter 2
Author:Single Rush
算法基础
Date : 2017.3.24

算法基础

本章由插入排序引入,但我将会把本章中的插入排序、归并排序,第六章的堆排序,第七章的快速排序,第八章的计数排序、基数排序、桶排序,以及另外一些我希望能补充进来的排序放在后面章节的笔记中一起分析。而在本章的笔记中我们重点将讲述算法的分析与设计基础。

循环不变式与算法的正确性,循环不变式将在后续章节中证明算法的正确性。
循环不变式的三条性质:
- 初始化:循环的第一次迭代之前,它为真。
- 保持:如果循环的某次迭代之前它为真,那么下次迭代之前它仍为真。
- 终止:在循环终止时,不变式为我们提供一个有用的性质,该性质有助于证明算法是正确的。

伪代码的一些约定:
1. 缩进表示块结构。
2. while、for与repeat-until等循环结构以及if-else等条件结构与C、C++等等中的那些结构有类似解释。其中向上叠加用关键字to,向下递减用关键字downto。当循环计数器以大于1的一个量改变时,该改变量跟在可选关键字by之后。
3. 符号“//”表示该行后面部分是注释。
4. i=j=e,表示将e的值赋给变量i和j。
5. 变量一般为局部变量,如无显式说明,一般不使用全局变量。
6. 数组元素通过“数组名[下标]”来访问。
7. 复合数据通常被组织成对象,对象又由属性组成。我们使用许多面向对象编程语言中创建的语法来访问特定的属性:对象名后跟一个点再跟属性名。
8. 我们按值把参数传递给过程:被调用过程接收其参数自身的副本。
9. 一个return语句立即返回到调用过程的调用点。我们规定伪代码中允许在单一的return语句中返回多个值。(此处需加注意,如有时间,我会在后面的笔记中详细描述)
10. 布尔运算符“and”和“or”都是短路的。
11. 关键词“error”表示因为已被调用的过程情况不对而出现了一个错误。

算法分析即预测算法需要的资源。相比于内存、通信带宽、硬件资源,我们“通常”更关心计算时间(时间复杂度)。但这并不绝对,如在分布式存储系统中,我们可能会发现带宽资源更重要,我们可能会通过增加计算复杂度来降低带宽的使用。

而时间复杂度、空间复杂度等等,我们也将在下一章中详细分析。当然这是最重要的,因为算法分析后,才能算法设计!
之后是算法设计,主要提到的是“分治法”,我将这一部分与第四章“分治策略”结合放在第四章的笔记中,此处便不多提。

完结
2017.3.24

CONTACT ME

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值