读书笔记:《算法导论》,第2章:算法基础

本章内容:贯穿本书的框架。

2.1 插入排序

排序问题。输入:n个数的序列;输出:输入序列的一个排列,满足递增性。
关键字:希望排序的数。输入以n个元素的数组形式出现。
算法的描述:伪代码。类似于真码。区别:
1.最清晰、最简洁的方式(可能有英文语句);
2.不关心软件工程问题:忽略数据抽象、模块性、错误处理等。

插入排序:
取每一个数并从右向左依次与其左侧的“有序区”(已排序好的部分)比较,并将其插入正确位置。原址排序。
循环不变式:当前数字左侧由原元素组成且已按序排列。
理解算法的正确性。性质:
1.初始化:第一次迭代之前为真;
2.保持:若某次迭代之前为真,则下次迭代前仍为真;
3.终止:循环终止时为真。——以此证明算法正确性。
注意:伪代码的约定:
1.以缩进表示块结构;
2.循环语句类似实际语言,退出循环后计数器保持其值;
3.//表示注释;
4.多重赋值:I=j=e等价于j=e后I=j;
5.变量局部于过程,不用全局变量;
6.数组:A[I]表示A的第I个元素,A[1..j]表示A的子数组,包含A[1]...A[j];
7.对象:复合的数据,由属性组成,以运算符.访问,表示数组/对象的变量看作对数据的指针,属性记号可以串联;
8.按值传参:被调用过程接收其参数自身的副本;
9.return返回过程调用点,并可能将值传回调用者;
10.and和or的短路性:a and b如a = false则不执行b,or同理;
11.error表示出错并调用处理过程。

2.2 分析算法

预测需要的资源:时间(最想要),内存、带宽、硬件等。选出最有效算法/抛弃较差算法。
模型:RAM。没有并发操作,包含真实计算机常见指令:算术/数据移动/控制,整形/浮点型数据,不考虑高速缓存和虚拟内存。

插入排序的分析:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值