持续学习&持续更新中…
脚踏实地
为什么要学习数据结构与算法
-
在技术圈里,我们经常喜欢谈论高大上的架构,比如高可用、微服务、服务治理等等。鲜有人关注代码层面的编程能力,而愿意沉下心来,花几个月时间啃一啃计算机基础知识、认认真真夯实基础的人,简直就是凤毛麟角。
-
像区块链、人工智能这些看似很新的技术,其实一点儿都不“新”。
-
当面临行业变动、新技术更迭的时候,其实那些所谓的新技术,核心和本质的东西其实就是当初学的那些知识。掌握了这个“规律”之后,学任何东西都可以很快,任何新技术都能快速迎头赶上。
-
基础知识就像是一座大楼的地基,它决定了我们的技术高度。而要想快速做出点事情,前提条件一定是基础能力过硬,“内功”要到位。
-
那技术人究竟都需要修炼哪些“内功”呢?我觉得,无外乎就是大学里的那些基础课程,操作系统、计算机网络、编译原理等等,当然还有数据结构和算法。
-
学习数据结构与算法带给我的好处:写代码的时候,我会不由自主考虑很多性能方面的问题。我写出时间复杂度高、空间复杂度高的垃圾代码越来越少了,算法能力提升了很多,编程能力也有了质的飞跃。
这门课程的特点
- 我根据自己研读数十本算法书籍和多年项目开发的经验,在众多的数据结构和算法中,精选了最实用的内容进行讲解。
- 我不只会教你怎么用,还会告诉你,我们为什么需要这种数据结构和算法,一点点帮你捋清它们背后的设计思想,培养你举一反三的能力。
- 对于每种数据结构和算法,我都会结合真实的软件开发案例来讲解,让你知道,数据结构和算法,究竟应该如何应用到实际的编码中。
四大篇章
入门篇
- 时间、空间复杂度分析是数据结构和算法中非常重要的知识点,贯穿整个专栏的学习过程。
- 但同时也是比较难掌握的,所以我用了 2 节课来讲这部分内容,而且还举了大量的实例
- 你需要一边学一边练,真正能掌握复杂度分析,为后面的学习铺路。
- 我希望通过这一模块,你能掌握时间、空间复杂度的概念,大 O 表示法的由来,各种复杂度分析技巧,以及最好、最坏、平均、均摊复杂度分析方法。
- 之后,面对任何代码的复杂度分析,你都能游刃有余、毫不畏惧!
基础篇
- 这部分是专栏中篇幅最大的内容,也是我们学习的重点,共有 26 节内容,涵盖了最基础、最常用的数据结构和算法。
- 针对每种数据结构和算法,我都会结合具体的软件开发实例,由浅入深进行讲解,并适时总结一些实用“宝典”,保证你印象深刻、学有所用。
- 如递归这一节,我会讲到,为什么递归代码比较难写?如何避免堆栈溢出?如何避免递归冗余计算?如何将递归代码转化为非递归代码?
高级篇
- 这部分我会讲一些不是那么常用的数据结构和算法。虽然不常用,但是这些内容你也需要知道。
- 设置这一部分的目的,是为了让你开拓视野,强化训练算法思维、逻辑思维。
- 如果说学完基础部分可以考 80 分,那掌握这一部分就能让你成为尖子生!
实战篇
- 我们整个专栏都是围绕数据结构和算法在具体软件实践中的应用来讲的
- 所以最后我会通过实战部分串讲一下前面讲到的数据结构和算法。
- 我会拿一些开源项目、框架或者系统设计问题,剖析它们背后的数据结构和算法,让你有一个更加直观的感受。
结尾语
- 人生路上,我们会遇到很多的坎。跨过去,你就可以成长,跨不过去就是困难和停滞。而在后面很长的一段时间里,你都需要为这个困难买单。
- 对于我们技术人来说,更是这样。既然数据结构和算法这个坎,我们总归是要跨过去,为什么不是现在呢?
- 我希望,通过这个专栏,不仅能帮你跨过数据结构与算法这个坎,还能帮你掌握一种学习知识和技能的方法,帮你度过职场甚至人生的重要时刻!一起加油吧!
参考
极客时间-王争: 数据结构与算法之美.
本文完,感谢您的关注支持!