我这次阅读的书籍是《挑战程序设计竞赛——算法和数据结构》。这本书是我曾加在实验室的时候所购买的,惭愧的是,当时并没有画什么时间去阅读它,多数是拿来当成解题的板子书。这次作业,也算是找到一个机会去重新认真的阅读这本书。
我从中找寻了包括排序、搜索、分治、动态规划等四个章节进行了阅读,给我的总体感觉是有趣、实用、科学。
首先,这本书采用的是模块化的设计,章节的内容难度是逐级上升的,选取的题目也是进阶的,这对于小白来说并不会一道题都看不懂;对于每个算法,基本都是用图解的方式进行并辅以文字的说明,这就使得每一个算法的分析既易于理解又十分有趣,并保持了数学严谨性;这本书里的所有代码,并不是伪代码的形式出现,而是可供读者使用 与实际应用相结合。
在书的开头,作者以短短几页内容,把与算法的相关知识进行了概括与总结,这对于后续的阅读也有帮助。在书中,作者把日常生活中的“早上起床-换衣服-吃早饭-骑车上学”作为一种算法,因为算法在广义上指的是达成某种目的的步骤,从而引出我们狭义上的算法概念,起码这对于我而言,是很好的导入,会让觉得算法就像日常生活一样,是我们都能理解学会的。
一下是我对看完几个章节的感受。
1、排序
(1)插入排序:插入排序是指先将元素的第一个数当做一个有序的表,然后把第二个元素与第一个元素之间进行比较,插入最开始有序表中,从第二个元素开始,每一个元素都与前面的有序表比较,并加入这个有序表。最后得到一个完全有序的序列。因为在比较过程中,如果待插入的元素如果与有序表中的某个元素相比,是相等的,那么这个元素就插入在后面,所以插入排序是稳定的。
&#