数据结构与算法 - 开篇
一直深知“数据结构和算法”,除了上学那会系统的学习过之外,工作几年都没有深入系统的学习过。最近自己的工作闲暇之余打算把这块重新系统的学习下。下边是极客时间王争老师的专栏《数据结构与算法》学习笔记,方便自己翻阅记忆。
《数据结构与算法-王争》学习笔记,记录备查
# 为什么要学习算法
- 面试需要。数据结构与算法是计算机从业人员的基础,在面试时,在没有经验或无法短时间内判定一个人的能力时,考察数据结构和算法是很多大厂惯用的方法,切勿让它成为你面试的遗憾。
- 从业务开发看,了解数据结构和算法,可以写出效率更高,占用内存更少的代码,而不是简单的CRUD操作。可以更好的了解我们使用的各种中间件的工作原理,在使用和排错方面游刃有余。
- 从架构设计看,了解数据结构和算法,可以使架构效率更高,内存更节省,在时间和空间复杂度上更优。
总结,了解数据结构和算法可以使我们学习效率更高,编写出占用内存更少的系统。可以快速的理解现有中间件的工作原理和方法,更好的使用。可以更好的锻炼我们的思维模式和方法。
# 什么是数据结构与算法
- 学习数据结构与算法时,不必去细究它的概念和定义,重在理解。
- 广义上讲:
- 数据结构,是指一组数据的存储结构。
- 算法,是操作数据的一组方法。
- 狭义上讲:是某些著名的数据结构和算法,比如队列、栈、堆、二分查找、动态规划等。
数据结构是为算法服务的,算法要作用在特定的数据结构上,两者是相辅相成的。
- 数据结构是静态的,只是一种数据的组织方式。如果不在它上边构建和操作算法,孤立的数据结构是无意义的。
- 算法必须作用在特定的数据结构上,算法的构建是和数据结构的特性相关的。数据结构的不同,算法可能就会失去作用。
# 如何高效系统的学习
- 学习数据结构和算法时,需要抓住重点。先把常用的数据结构与算法理解透彻,复杂的可以先稍放,沉淀一段时间再回来学习。
- 在学习数据结构和算法之前,我们需要先掌握衡量数据结构和算法的标准--复杂度分析。
- 我们需要重点学习的数据结构和算法:
- 数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie树。
- 算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。
- 学习时,要学习数据结构的「来历」、「自身的特点」、「适合解决的问题」、「实际的应用场景」。
# 一些作者分享的学习技巧
- 边学边连,适度刷题。在学习的过程中,要动手,使用自己熟悉的语言把数据结构和算法实现一遍,切勿眼高手低。刷算法题,可能是公认的在短时间呢提高算法“应试能力”最好的方法。但是学习的目的是应用,切勿为了应试而耽误太多时间,可适量的刷题。
- 多问、多学、多思考。这应该是学习所有新技能时,都可以用的方法技巧。
- 打怪升级法。给自己制定不同时期的目标,使用目标的达成来不断的激励自己的积极性。
- 反复迭代,不断沉淀。切勿贪多,贪快。学习知识是需要有「十年磨一剑」的毅力的,遇到啃不动的,可以先跳过,待沉淀一段时间,再回来看。常言道,稳固而知新,数据结构和算法就是这样。
上次更新: 2023/03/19, 15:09:33