《数据结构与算法-王争》阅读笔记

为什么要学习算法

  • 面试需要。数据结构与算法是计算机从业人员的基础,在面试时,在没有经验或无法短时间内判定一个人的能力时,考察数据结构和算法是很多大厂惯用的方法,切勿让它成为你面试的遗憾。
  • 从业务开发看,了解数据结构和算法,可以写出效率更高,占用内存更少的代码,而不是简单的CRUD操作。可以更好的了解我们使用的各种中间件的工作原理,在使用和排错方面游刃有余。
  • 从架构设计看,了解数据结构和算法,可以使架构效率更高,内存更节省,在时间和空间复杂度上更优。

总结,了解数据结构和算法可以使我们学出效率更高,占用内存更少的系统。可以快速的理解现有中间件的工作原理和方法,更好的使用。可以更好的锻炼我们的思维模式和方法。

什么是数据结构与算法

  • 学习数据结构与算法时,不必去细究它的概念和定义,重在理解。
  • 广义上讲:
    • 数据结构,是指一组数据的存储结构。
    • 算法,是操作数据的一组方法。
  • 狭义上讲:是某些著名的数据结构和算法,比如队列、栈、堆、二分查找、动态规划等。

数据结构是为算法服务的,算法要作用在特定的数据机构上,两者是相辅相成的。

  • 数据结构是静态的,只是一种数据的组织方式。如果不在它上边构建和操作算法,鼓励的数据结构是无意义的。
  • 算法必须作用在特定的数据结构上,算法的构建是和数据结构的特性相关的。数据结构的不同,算法可能就会失去作用。

如何高效系统的学习

  • 学习数据结构和算法时,需要抓住重点。先把常用的数据结构与算法理解透彻,复杂的可以先稍放,沉淀一段时间再回来学习。
  • 在学习数据结构和算法之前,我们需要先掌握衡量数据结构和算法的标准–复杂度分析。
  • 我们需要重点学习的数据结构和算法:
    • 数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie树。
    • 算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。
  • 学习时,要学习数据结构的「来历」、「自身的特点」、「适合解决的问题」、「实际的应用场景」。

一些作者分享的学习技巧

  • 边学边连,适度刷题。在学习的过程中,要动手,使用自己熟悉的语言把数据结构和算法实现一遍,切勿眼高手低。刷算法题,可能是公认的在短时间呢提高算法“应试能力”最好的方法。但是学习的目的是应用,切勿为了应试而耽误太多时间,可适量的刷题。

  • 多问、多学、多思考。这应该是学习所有新技能时,都可以用的方法技巧。

  • 打怪升级法。给自己制定不同时期的目标,使用目标的达成来不断的激励自己的积极性。

  • 反复迭代,不断沉淀。切勿贪多,贪快。学习知识是需要有「十年磨一剑」的毅力的,遇到啃不动的,可以先跳过,待沉淀一段时间,再回来看。常言道,稳固而知新,数据结构和算法就是这样。