2.1插入排序
伪代码:最清晰,最简短的表示方法来说明给定的方法。目的是为了表达算法的本质,常常忽略数据抽象、模块性、和错误处理的问题
自己:何为表达算法的本质?算法的本质在于计算的步骤的有序性和明确性。
循环不变式:用来帮助我们理解算法的正确性。它拥有三条性质:base case为真,recursive step为真,final step 为真
自己:在C语言编程(不知道其他对象编程或过程编程是不是)中有三种语言结构,循环,顺序和判断,顺序和判断都容易判断程序的正确性,而循环只好靠循环不变式来证明一些性质,进而证明程序的正确性
2.2 分析算法
硬件模型:RAM
自己:为了简化对算法的分析,使算法分析独立与机器之外
输入规模:依赖于研究的问题
自己:具体问题具体分析
算法的运行时间:执行的基本操作数或步数。每行代码就是一步
自己:简化了模型,使算法分析更为简单
算法分析更简化的抽象:我们真正感兴趣的事运行时间的增长率或增长量级
自己:抽象都这种层次,就相当于渐进分析。实际上,抽象是一种技术,也是一种思想,它简化了模型,使分析更为简单。