我的算法与数据结构阶段性总结

  • 为什么一定要学习算法和数据结构?
    1. 写出高性能并且优雅的代码
    2. 不会算法和数据结构,你对你的代码是好还是坏,为什么好为什么坏都不了解的,也就是你不知道你的代码的时间复杂度和空间复杂度,那怎么会好呢?
    3. 经常使用的MySQL 的索引使用的是B+树,那么什么是B+树呢?使用的Redis的集合里面的实现是怎么实现的呢? 使用的是跳表实现的,那什么是跳表呢? 这些都是数据结构的数据存储知识

所以,你如果不掌握和熟悉算法和数据结构的话,你对你的代码的好与坏是不知道的,同时对项目数据量变大以及复杂度增加时,没有预估,没有预估怎么会做到防范于未然,做好项目呢。还有经常使用的中间件,为什么他们那么高效,都是由于他们在存储结构上面经过trade-off 以后选择了适合的数据结构,才能实现这么高效的运行。

  • 为什么看了相关书籍,也知道大概的具体实现,还是没有掌握?
    1. 看了两边《大话数据结构》还是不不会实现基本的数据结构,以及使用基本的数据结构应用到自己的算法当中
    2. 看书是一回事,看完以后是否真正理解了,转化成自己的知识了么?我目前的情况是并没有,只是了解,没有转化为自己的认识和理解,自己可以使用笔和纸,将过程画出来,再去实现,因为只有你了解了过程,才有可能实现,这就是我们为什么我们有时候需要写伪代码
    3. 练习,画图,动手,思考,动手,反馈,动手。多动手,多练习,编程是一个实践性非常强的学科,只看书是学不会写代码的。

  • 那到底应该怎么学习呢?
    1. 了解每种数据结构的优点和缺点,以及产生背景以及我们可以用这个数据结构做什么?
    2. 通过画图的方式将算法的演变过程或者数据结构的存储方式画出来,推演一番
    3. 动手将画出的流程和存储方式进行实现

曾经我也是那个学这个有啥用呢?我把功能实现好了不就行了,后来发现自己错了。

原文地址:https://www.cnblogs.com/zhangpengfei5945/p/12855449.html