绿林网

数据结构读后感精选

数据结构读后感精选

《数据结构》是一本由邓俊辉著作,清华大学出版社出版的平装图书,本书定价:39.00元,页数:389,特精心收集的读后感,希望对大家能有帮助。

《数据结构》读后感(一):学习数据结构极好的书

本书有几个特点:

1 组织有序,轻重有序

2 语言简练,通俗易懂

3 注重算法的拓展性,注重算法的分析,注重算法的正确性

4 排版精美,图的比例非常大

5 有配套的网络课程,邓老师是一个非常棒的老师

你可能会有的几点疑惑:

1 为什么使用C++?

这个原因在作者的第一章有所体现(作者讲了算法必须满足几个要求,其中一点就是健壮性, 也即通用性),另外C++的抽象能力非常棒,而且使用C++能写出非常简练优雅的代码

2 怎么使用?

详读,并且购买与它配套的习题练习

3 阅读之后的体验?

非常棒,超值.

《数据结构》读后感(二):这可能是国内最好的数据结构教科书了

作者很用心。 最新版已经是全彩图的了,国内少有。

个人觉得这本书也有美中不足的地方。

比如说:

1.全书中的(lo + hi) >> 1 可以改为 (lo + hi)/ 2 ;

因为随着优化器的技术的进步,现代常用的编译器都可以对后一种情况进行优化成前面的形式。不必为了所谓的性能降低可读性;

2.众所周知,cpp资源管理一直都是很容易出错的。只要保证RAII和谁申请谁释放这两个原则就不会有问题。书中BinNode由上层的Tree来释放资源,很容易就内存泄漏了;

3.没有对拷贝构造和赋值拷贝这两个函数进行处理;

4.对BinNode进行操作的宏太多了,放到BinNode里成为静态成员函数会更好一点。宏这东西是没有类型的,书中的宏既有对BinNode处理的有对BinNode*处理的,根本分不清.

5.图结构也有问题,当删除点之后,之前送到外面的比当前节点索引大的会失效,指向错误的节点。

加一个getIndex(),remove节点之后重新获取节点编号

《数据结构》读后感(三):有感兴趣的友友们吗?线上兼职,时间自由。

专业要求:计算机:擅长任意一种编程语言,(C/C++/C#/Java/Python/Haskell/Rust/Ruby/LISP/PHP/Js/IOS/Android/MATLAB/数据结构/算法分析/计算机组成原理/操作系统/网络原理/编译原理/汇编/数据库/机器学习/图像识别/人工智能/并行计算/分布式/单片机/嵌入式/人机交互/信息安全/软件工程/微积分/线性代数/概率论/数值分析/数理逻辑/线性规划/统计方法/离散数学)。职位要求:1.学历要求:国内985/211高校 大三及国外top30以内院校在读的大三以上同学 2.英语满足其中条件之一:四级、六级、专八、托福90分以上、雅思6.5分等;3.做事认真、有耐心,有责任心,能够在规定的时间内完成稿件;

《数据结构》读后感(四):说一说这本书的不足之处

这本书看了有几个月了,确实是国内比较好的数据结构书。好处大家都说了,我来说说看书过程中遇到的不足之处。

1. 首先是喜欢用一些奇技淫巧,感觉带着一些竞赛色彩。比如其他书评提到的(lo + hi) >> 1; 另外还有while (0 < n)这种代码,虽然无伤大雅,但看着总是比较难受,甚至令人烦躁。

2. 还是奇技淫巧,喜欢写if (a = b),while (a = b)这种在布尔条件里赋值的代码,当然这也没有错,但对读者来说就增加了阅读负担,甚至在开始造成了迷惑(这也有我自身水平不足的原因)。毕竟代码的可读性很重要,不过也许是作者想压缩一下排版空间。

3. 有些代码是为了后面的章节做准备的,但作者在书中并没有写出来,这会造成迷惑。另外有些函数已经声明了却没有实现,令人一头雾水。比如第五章二叉树里面的BinNode::size()函数和release函数。size()函数我在视频里看到了,当然代码写的有点投机取巧,也没有考虑边界条件。release函数一直没找到。对于swap这种简单函数可以不写实现,但对于复杂一些的函数还是应该说明一下,至少给个API让读者可以自己实现吧。

4. 代码中几乎都没有考虑奇异值或边界条件,也没有异常处理。当然这个是比较苛责的了,可以说是过分要求。因为这不是本书的主要任务。但是能给出一二还是会更好的。

5. 数学风格非常浓厚,但有些数学证明并不清晰易懂,所以只好跳过不看了。但书中第一章对于时间复杂度的分析结合视频给了我很多收获。

6. 代码风格不是特别好,不是纯正的C++ Style,还是夹杂了不少C语言的写法。比如不用class而用struct(这句话有我个人色彩,因为我很不喜欢用struct,一是封装性不好,二是struct这个词看着太难受了。)另外喜欢用C风格字符串而不是string,平添了处理麻烦,这里在第四章用栈实现计算机那里比较明显,最后我只好用string加迭代器改了一遍。而且喜欢用宏,这一点在二叉树那里非常多,简直让人疯掉,也不解释一下参数类型,我自己是全部写成了inline成员函数。这本书写的比较早,可能C++11还没普及,再版的话建议添加C++11新特性,更多的使用C++ Style Code。

7. 排序的内容比较分散。在第二第三章介绍了归并排序,插入排序,选择排序等,因此在后面的排序一章就没有介绍了,这就使内容比较分散。还不如专门一章介绍排序。

目前大概有这些想法,书我看得挺慢的,还没看完。以上就当作我的逼逼歪歪小吐槽吧,毕竟在看书的时候也是好多次被难以理解的语句和代码弄得心烦意乱想破口骂娘,对书的评价和期待也从一开始的满分慢慢降低下来。也许看到某一章后面就换其他书看了。数据结构的书这么多,想找一本完美的可真难。

2019.2.26补充:已经放弃读这本书了,实在是看着书上不多解释而又晦涩的代码要骂娘。推荐一本我之前看的数据结构方面的书。

C++数据结构与算法

8.4

[美]乔兹德克(Adam Drozdek) / 2014 / 清华大学出版社

C++数据结构与算法,Adam Drozdek著,徐丹,吴伟敏译,清华大学出版社出版。这本书也有写的不好的地方,但总体我觉得比较详细,而且习题出的非常好(就是没有答案)。书中有部分疏漏之处,自己大体上能改正。代码风格和排版都比邓书要好,至少不会让人读着火大。邓书的参考文献里也有这本书,大家可以自己去看一下。

《数据结构》读后感(五):读《数据结构》随笔

本书结合邓老师的公开课,效果最佳。书看不懂看视频,视频看不懂看书。

本书真正的做到了知其然又知其所以然。是第一本向我展现CS与数学联系起来的书

编码多年,一直有种感觉编码特别像文科,都是背诵记忆与熟练使用的过程,所以看某些书籍特别像文科,看着阻力很大,越看越没有兴趣,也越没有信心,后来偶然看了《编码》才了解计算机组成的底层逻辑,慢慢产生了了解的兴趣。又一个偶然的机会看到浙江大学计算机系陈越在知乎上的回答,CS的基础课程最小子集:计算机组成、数据结构、操作系统、计算机网络、数据库、一门语言、共6项。《编码》对应计算机组成,想要了解计算机的全貌,基础部分必须要有系统的了解,否则总有黑箱,心里不踏实,遂计划逐一学习,这本邓老师的《数据结构》就是在这个背景下针对数据结构部分选择的书籍,选书很重要。下面梳理下我在这本书中的收获。

全书体例参照现代数据结构普遍采用的分类规范进行编排,其间贯穿以具体而本质的线索,在了解各种具体数据结构之后,通过概况与提升形成对数据结构家族的整体性认识。从方法论的高度掌握利用计算机求解问题的一般性规律和方法。比如从逻辑结构角度,按照线性,半线性和非线性三个层次对数据结构进行分类,并以遍历算法为线索,点明不同层次之间相互转换的技巧。又如,通过介绍动态规划,减而治之,分而治之等算法策略,展示如何将人所擅长的概况化简思维方式与计算机强大的枚举迭代能力相结合,高效的求解实际应用问题,再如,从数据元素访问形式角度,按循秩访问、循位置访问或循链接访问、循关键码访问、循值访问、,循优先级访问等方式,对各种数据结构做了归类,并指明它们之间的联系和区别。

通过通读全书给我最大体会就是模型决定性能渐进意义上的上限,比如基于比较树模型的排序算法,最坏情况下CBA式排序算法至少需要Ω(nlogn)时间,平均意义上的较快的快速排序也是常数意义上的改进,更快只能使用其他模型比如桶排序和基数排序。数据结构应是离散数学在CS领域的一种具体实现,研究离散的点之间的具体关系,线性、树、图,线性和树都可以看成是图的一种特例,所以数学是数据结构的基础。

数据机构、算法

通过学习数据结构才能更好的做程序的性能优化,这是性能优化的理论基础。

1.理解了为何面试java高级总是问java集合的内容,实际问的就是数据结构的掌握情况,数据结构在java语言的具体实践。

2.面向对象中封装特征是由数据结构中抽象数据类型而来。见摘抄部分1

3.java1.8中Arrays.sort,根据长度和连续性的不同分别选用双轴快速排序、插入排序和归并排序

4.java1.8中 Collections.sort()跳转至Array.sort,还有其他具体内容

5.java中String的串匹配算法使用蛮力算法,因java判断需比对的字符串较短。

6.java中hashmap中长度的选取为2的整数次幂,是出于取余效率和扩容的考虑是针对第一代哈希表hashtable的改进,hashtable初始容量使用11(素数),后续为2N+1

6.linux中grep命令使用BM算法(Boyer Moore)

7.linux内核使用的数据结构:链表,队列,映射(哈希表),红黑树

8.数据库like谓词使用的串匹配算法??

9.mysql索引使用B+树是B树的扩展。

10.mysql中order by实现原理,数据集大小小于排序所分配内存(参数配置)时,使用内排序快速排序,小于时使用外排序-归并排序,另外可通过建立索引使数据在该字段上有序直接查询遍历即可。另外一种情况当大于时取前几列,但这几列小于所分配内存,则可使用内排序-堆排序。

10.数据结构的所以然要到数学中寻找答案,离散数学,概率论等。

11.正则表达式的实现:有限状态机。

12.理解在分布式情况下使用的一致性哈希算法。

各个总结,待补充......

1.所谓封装:就是将数据项与相关的操作结合为一个整体,并将其从外部的可见性划分为若干级别,从而将数据结构的外部特性与其内部特性相分离,提供一致且标准的对外接口,隐藏内部的实现细节。于是,数据集合及其对应的操作课超脱于具体的程序设计语言,具体的实现方式即构成所谓的抽象数据类型(abstract data type ,ADT)。抽象数据类型理论催生了现代面向对象的程序设计语言,而支持封装也是此类语言的基本特征。

本文由作者上传并发布(或网友转载),绿林网仅提供信息发布平台。文章仅代表作者个人观点,未经作者许可,不可转载。
点击查看全文
相关推荐
热门推荐