《算法导论》笔记一

看《Introduction to Algorithms, Second Editon》,里面提到插入排序和选择排序,这两个算法的时间复杂度是一样的。比较这两个算法的时候,我发现其实它俩是一回事。插入排序是把新元素插入到已经排好了序的序列里,我们知道执行当前操作需要插入的数字;而在选择排序中,需要插入的新元素是未知的(需要选取),但是插入的位置是已知的。插入排序是插入的元素已知,选择排序是插入的位置已知,插入排序插入新元素的过程与选择排序选择元素的过程相同。

书中描述算法的时候,元素都是放在数组中的,所以插入排序的时间复杂度为n的2次方,其中大部分时间用在了移动数组原素上。如果我们用链表而不是数组来存储数据,花在移动数据上的时间省掉了,时间复杂度是不是变为n了?难道这就是传说中的以空间换时间?

书里提到的loop invariants证明方法对理清思路很有帮助,divide-and-conquer的方法来解决问题也很有启发,不过我目前还不能说完全掌握了它们。另外,在计算复杂度时,数学知识就派上用场了,而以前,我对数学有相当的排斥,原因是觉得背数学公式没有用。现在看来,数学还是有她用处的(这简直是废话),所以要好好学习并使用她。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值