02 | 如何抓住重点,系统高效地学习数据结构与算法?
该思维导图由 AI 生成,仅供参考
什么是数据结构?什么是算法?
- 深入了解
- 翻译
- 解释
- 总结
学习数据结构与算法需要抓住重点,采用系统高效的学习方法。数据结构是指一组数据的存储结构,而算法则是操作数据的一组方法。这两者相辅相成,数据结构为算法服务,算法作用在特定的数据结构之上。学习的重点在于掌握复杂度分析,这是数据结构与算法学习的精髓。除了复杂度分析,还需要掌握20个最常用的、最基础的数据结构与算法,如数组、链表、排序、搜索等。学习过程中要注重理解每种数据结构或算法的“来历”“自身的特点”“适合解决的问题”以及“实际的应用场景”,并进行思维训练。通过系统学习,能够提高编程内功,减少低效代码的出现。 在学习过程中,作者提出了一些学习技巧,如边学边练、多问、多思考、多互动、打怪升级学习法和知识沉淀。这些方法可以让学习变得更加轻松、高效,同时培养良好的学习习惯。作者鼓励读者在学习过程中多与他人讨论、互动,提出问题并寻求解答,同时强调知识的沉淀和反复迭代的重要性。 总的来说,本文为读者提供了系统学习数据结构与算法的指导,同时分享了一些实用的学习技巧,帮助读者更好地掌握知识,提高学习效率。文章内容丰富,涵盖了学习方法、技巧和学习重点,适合技术人员和学习者阅读参考。
《数据结构与算法之美》,新⼈⾸单¥68
全部留言(2969)
- 最新
- 精选
- 阿良当我们要谈一个事物/概念的时候,需要问自己三个终极问题--是什么?为什么?怎么样? 什么是数据结构和算法 数据结构,就是一组数据的存储结构。 算法,就是操作数据的一组方法。 数据结构是为算法服务的,算法要作用在特定的数据结构之上。 为什么需要数据结构和算法 来谈谈应用层面的原因。在计算机科学和互联网迅猛发展下,需要计算的数据量越来越庞大。但是计算机的计算能力是有限的,这么大量的数据计算,需要越来越多的计算机,需要越来越长的计算时间,注重效率的我们需要尽可能的提高计算效率。其中重要的一项,就是使用合适的数据结构和算法。选用合适的数据结构和算法,特别是在处理体量非常庞大的数据的时候,可以极大提高计算效率。那么,第三个问题来了,我们怎么选用合适的数据结构和算法?有什么衡量标准吗? 怎么样衡量数据结构和算法 需要引入一个衡量的标准(metric)---时间复杂度和空间复杂度。 学习数据结构和算法的基石,就是要学会`复杂度分析`。知道怎么去分析复杂度,才能作出正确的判断,在特定的场景下选用合适的正确的算法。而不是盲目的死记烂背,机械操作。 在本专栏中,重点学习20个最常用的最基础的数据结构和算法,需要我们逐一攻克。 10个数据结构: 数组,链表,栈,队列,散列表,二叉树,堆,跳表,图,Trie树 10个算法: 递归,排序,二分查找,搜索,哈希算法,贪心算法,分治算法,回溯算法,动态规划,字符串匹配算法
作者回复: 写的好!
2018-09-247334 - zyzheng“学习最好的方法是,找到几个人一起学习,一块儿讨论切磋,有问题及时寻求老师答疑。” 老师说的这个方法非常赞同,之前在学其他内容时经常遇到个人单独学习坚持不下来的问题。这次和公司里有兴趣的同事一起成立了一个五人学习小组,计划每周组织一个小时交流会,每人讲10分钟,自由讨论10分钟,希望能对自己和大家的学习都有帮助,希望能坚持下去✊
作者回复: 太赞太用心了
2018-09-243320 - 黄海娜学习了,也理解了,当时可以写出代码来,但是长时间就忘记了😣,这个难道真的如果日常不用的话,的确会忘记,那是不是就要先当公式一样记下来再说?
作者回复: 完全不需要死记硬背的,我也记不住快排,红黑树,但是只要你掌握分析的能力,等你真的需要的时候,花不到半个小时就弄懂了。你要记住的是,这些算法的特点,应用场景,用到了能想到他就好了。
2018-09-242125 - Joshua 兆甲需要教材吗?老师? 自己学习的方法: 排个队想到队列,火车进站想到堆栈,看到树上开花想到树的某些指标,导航想到贪心,将生活场景与算法和数据结构的场景结合起来。 遇到的困难: 应用和实践不行。你看树是数据结构,而大众有更约定俗成的固有看法,切磋估计不大可行,且自己学习,首先需要一个代码开发的条件,不断思考练习,不易坚持。 数据结构不容易可视化呈现。靠画图建立初始的结构,靠脑补数据变化的过程,再靠心算将结果呈现为“可视”图景。中间,一般在机器上就是简单plain text输入输出.不是第一信号系统,接受收效率慢。 没有大图景,只有片面观察。即便会了一招半式,获得敢不强,信心不足,真正应用中,或许没有直接上两个循环嵌套来得直接,明了,易懂。容易生出百无一用是书生的瞎想 以上。老师中秋快乐!循环链表代表我的心。
作者回复: 写得好 你可以看看大话数据结构和算法图解。里面的学习方法跟你的很相似
2018-09-25295 - SeLiNnnn现在几乎都是一个人学习 在工作室一待就是一天 因为很有目标和动力 现在不存在坚持不下去的状态 有没有人和我一起都无所谓 享受孤独 孤独让人顽强。况且我就是想提升编程能力 锻炼逻辑 并不是为了考试而学 就是我喜欢我愿意花时间和精力 我非常想变得优秀。加油加油!!我就好好学好好练 每天都鼓励自己。
作者回复: 加油💪
2018-09-25663 - Rookie我想问问用JavaScript真能实现这些算法跟数据结构吗?
作者回复: 我觉得能 后面如果你觉得不能你就再给我留言吧
2018-09-24738 - 确认过眼神本人学的Java,想通过这个课程学习如何把数据结构和算法切实的用到编程中,来实现用空间换时间。 1、提高每个接口的访问速度,可否实现? 2、时间复杂度越高,执行效率越低吗? 3、两张表联查后再遍历查询第三张表是否比三张表联查效率高?利用数据结构和算法是否有更优的解决方案? 希望老师给出三个问题的答案,伙伴们一起讨论。
作者回复: 1. 学习的过程可以锻炼你的性能意识,写代码的时候会不自觉的考虑性能问题,所以写出低效代码的情况就少了 2. 理论上是的,但实际上时间复杂度与执行时间并不划等号,我后面会讲到,有时候O(logn)的算法要比O(1)算法还快 3. 这个没有确切的场景我也不好说,你可以自己测试一下。 一般来说,海量数据的存储一般都是分库分表,所以join操作可能就无法用上了。
2018-09-24233 - 五岳寻仙老师给的思路非常非常清晰,不愧是IT大牛,我很喜欢这种结构化的思维方式,相信同学也有同感! 已经决定严格跟随老师的思路这门课。在执行前遇到三个困难: 1. 想请老师推荐刷题的地方; 2. 想知道每种算法和数据结构在现实中的应用场景,因为很多时候不是学不懂,是积极性不够,所以我觉得只有意识到它的重要作用,才会深入地钻研。 3. 没有交流的对象和途径,希望咱们专栏能有个微信群,方便交流。(我微信jjjzzz2014,期待和各位同学一起交流成长!)
作者回复: 1. 刷题的话leetcode比较火 2. 会讲的 放心 3. 暂时就在留言区交流吧
2018-09-24227 - 一周以前学的时候不专心,工作之后发现用的时候就后悔了,现在想着补一下基础这一块,但新的技术又不断的出现,需要不断学习,感觉好累,想问下大牛,新知识和基础之间该如何取舍?谢谢
作者回复: 现夯实基础。 新的框架 工具 技术太多了 学了之后如果项目中用不上 很快就忘了 就只能权当是开拓眼界了
2018-09-25223 - 李二木最近半年听吴军老师专栏经常讲算法,彻底颠覆了我对算法的肤浅认识。以前总是认为算发只能解决与计算机有关的的问题。而吴军老师却是以算法和生活连接,通过算法思维来讲解我们生活中遇到的困惑。少做无用功,跳出死循环,算法以成为生活哲学。原来算法也可以这样接地气。对于计算机行业的从业者越听越惭愧,所以就想重新学习下算法(大学也没学懂),这次学习的心态不再像以前那样了,好奇心态多了些,恐惧心态少了些! 刚好又在对时间遇到对的王争老师,接下来,期待王老师的娓娓道来!
作者回复: 嗯嗯 欢迎你来听我的专栏
2018-09-26422