一,循环不变式
循环不变式主要用来帮助我们理解程序的正确性。
循环不变式的三条性质:
- 初始化:循环的第一次迭代之前,它为真。
- 保持:如果循环的某次迭代之前它为真,那么下次迭代之前它仍为真。
- 终止:再循环终止时,可验证算法的正确性。
二,伪代码的一些约定
伪代码的重要性在于它可以简洁地表达出算法的本质
- 缩进代表块结构:采用缩进代表块结构可以大大提高伪代码的清晰性。
- 可用while、for…to…by… 、for…downto…by…、repeat-until等循环结构以及if-else等条件结构 : by之后是增量大小。
- 记号”//”:代表注释。
- 记号“..”:表示数组中值的一个范围,如A[1..j]代表A的一个子数组。
- 记号“.”:表示使用对象的某个属性,如A.length。
- 逻辑运算符 and、or、not
- 关键词error:表示因为已被调用的过程情况不对而出现了一个错误。
三,算法的分析
分析算法的结果意味着预测算法需要的资源。
一些算法分析时要使用的概念:
- 输入规模
- T(n):运行时间
- 常使用最坏情况的T(n)和平均情况的的T(n):
因为最坏情况的运行时间给出了任何输入的运行时间的一个上界。
而且最坏情况经常出现。 - 增长量级
- 时间复杂度与空间复杂度