《数据结构与算法分析–xx语言描述版》怎么读+重点章节

首先先强调一下,这本书的作者是 马克.艾伦.维斯,之前也有其他人写的,也叫这个名字,所以大家看的时候注意一点哦。

我一直认为,在大一大二的核心科班课程中,数据结构与算法是最难入门的一门,一旦成功掌握,其他的课程,你也能驾驭,并且这门课程,也是大厂的门槛。

一般在学校的教程,要嘛自己老师写的,要嘛很经典,但自学难度过大,并且伪代码,我认为对于初学者,用实际的代码更好,如果实际的代码你都能懂,那写出伪代码还是比较简单的事。

那我当时看的是《数据结构与算法分析:C语言描述版》这本书,也有 Java 版本的,你们选适合自己 语言的就行,下面我跟大家说下这本书的一些重难点

PS:电子版咱们兴趣有哦,文件区下载。

一、这本书适合 0 基础吗

我个人认为,如果你对数据结构一点概念也没有,那么直接看这本书亦或是学校教程,都会吃力,所以可以先看视频简单入门一下,有个大致的概念,然后配合这本书看,效果会更好。

二、这本书的代码可以复制粘贴运行吗

答案也是不可以的哦,它是实现一个一个的方法,比如链表插入,那么它只是给你 插入 的具体代码,还得你自己根据前面的代码,拼凑起来。

对于初学者,一开始也会难,不过嘛,你可以网上找下完整案例,看一下,然后在对着书来拼凑,应该就知道怎么运行了

三、具体阅读指南

第一章:数学基础知识,可以看一下了

第二章:其实第二章有点难,涉及到算法知识了,简单浏览下,看不懂就跳过了,第二章本质就是讲解时间复杂度这些,如果不懂的,强烈推荐看这篇文章:漫画:别在问我什么是时间复杂度?

第三章:重点了,定义节点的时候,你们可以直接用整形 int 直接代替里面的 元素类型了(ElemenType),第三章好好学,很重要

第四章:重点了,4.4的平衡树有点难,可以跟着好好实现一下,非常锻炼 coding 能力

第五章:哈希表的基础,也很重要,主要是 5.4 这几个开发地址法了,后面 5.5 和 5.6,随便了解就行

第六章:6.1~6.4比较重要,6.3最重要了,6.4主要了解优先队列的应用就行,后面的6.5~6.8,看你自己的兴趣了,可看可不看

第七章:排序算法,这个不用说,重点,特别是快速排序

第八章:可以先放着,后面再看,后面刷题会刷到这类型的题再来看就行,当然,你想看也行了

第九章:图论算法,主要就是掌握图的两种遍历方式了,深度优先和广度优先,这是重点,至于其他的,建议有时间就学习下,没时间可以先放一放。其实图论考的不多,最小生成树可以优先学习下,其他的,个人认为有时间或者感兴趣就学,觉得时间不是很多,可以先放一放。

第十章:我觉得可以不用看了,就是泛泛说一下算法思想而已,你们再去看别的算法思想教程吧,可以不看。

第十一、二章:个人觉得可以不看,红黑树了解下应用就行,不如通过文章来学。

四、课后练习要不要做

这个我觉得看个人,可做可不做,我反正我是没做,一开始的链表,倒是有做了几道,主要也没答案,我就不做了,还是学完去刷题吧,所以呢,看个人兴趣了,不用纠结,后面会经常用到链表这些,每次用的时候复习,多用几次就会默写了。

另外,强调一下,一定要写代码 + 运行出符合预期的结果,如果不符合预期,那就给我找出 bug,直到程序代码符合预期。

五、我要用什么语言实现

如果你现在大一,并且也 没有选定自己的技术栈,那就用 C 语言吧;如果你选了技术栈并且学了对应的语言,那就用对应的语言。

最后,大家加油,这是一个重难点!

发表回复

后才能评论