数据结构与算法之美
王争
前 Google 工程师
283750 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 81 讲
基础篇 (38讲)
数据结构与算法之美
15
15
1.0x
00:00/00:00
登录|注册

02 | 如何抓住重点,系统高效地学习数据结构与算法?

字符串匹配算法
动态规划
回溯算法
分治算法
贪心算法
哈希算法
搜索
二分查找
排序
递归
Trie树
跳表
二叉树
散列表
队列
链表
数组
知识需要沉淀
打怪升级学习法
多问、多思考、多互动
适度刷题
边学边练
编程基础
数学基础
算法
数据结构
复杂度分析
知识需要沉淀
打怪升级学习法
多问、多思考、多互动
适度刷题
边学边练
学习技巧
学习的基础
学习的重点
学习方法
数据结构与算法学习

该思维导图由 AI 生成,仅供参考

你是否曾跟我一样,因为看不懂数据结构和算法,而一度怀疑是自己太笨?实际上,很多人在第一次接触这门课时,都会有这种感觉,觉得数据结构和算法很抽象,晦涩难懂,宛如天书。正是这个原因,让很多初学者对这门课望而却步。
我个人觉得,其实真正的原因是你没有找到好的学习方法没有抓住学习的重点。实际上,数据结构和算法的东西并不多,常用的、基础的知识点更是屈指可数。只要掌握了正确的学习方法,学起来并没有看上去那么难,更不需要什么高智商、厚底子。
还记得大学里每次考前老师都要划重点吗?今天,我就给你划划我们这门课的重点,再告诉你一些我总结的学习小窍门。相信有了这些之后,你学起来就会有的放矢、事半功倍了。

什么是数据结构?什么是算法?

大部分数据结构和算法教材,在开篇都会给这两个概念下一个明确的定义。但是,这些定义都很抽象,对理解这两个概念并没有实质性的帮助,反倒会让你陷入死抠定义的误区。毕竟,我们现在学习,并不是为了考试,所以,概念背得再牢,不会用也就没什么用。
虽然我们说没必要深挖严格的定义,但是这并不等于不需要理解概念。 下面我就从广义和狭义两个层面,来帮你理解数据结构与算法这两个概念。
从广义上讲,数据结构就是指一组数据的存储结构。算法就是操作数据的一组方法。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

学习数据结构与算法需要抓住重点,采用系统高效的学习方法。数据结构是指一组数据的存储结构,而算法则是操作数据的一组方法。这两者相辅相成,数据结构为算法服务,算法作用在特定的数据结构之上。学习的重点在于掌握复杂度分析,这是数据结构与算法学习的精髓。除了复杂度分析,还需要掌握20个最常用的、最基础的数据结构与算法,如数组、链表、排序、搜索等。学习过程中要注重理解每种数据结构或算法的“来历”“自身的特点”“适合解决的问题”以及“实际的应用场景”,并进行思维训练。通过系统学习,能够提高编程内功,减少低效代码的出现。 在学习过程中,作者提出了一些学习技巧,如边学边练、多问、多思考、多互动、打怪升级学习法和知识沉淀。这些方法可以让学习变得更加轻松、高效,同时培养良好的学习习惯。作者鼓励读者在学习过程中多与他人讨论、互动,提出问题并寻求解答,同时强调知识的沉淀和反复迭代的重要性。 总的来说,本文为读者提供了系统学习数据结构与算法的指导,同时分享了一些实用的学习技巧,帮助读者更好地掌握知识,提高学习效率。文章内容丰富,涵盖了学习方法、技巧和学习重点,适合技术人员和学习者阅读参考。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《数据结构与算法之美》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(2969)

  • 最新
  • 精选
  • 阿良
    当我们要谈一个事物/概念的时候,需要问自己三个终极问题--是什么?为什么?怎么样? 什么是数据结构和算法 数据结构,就是一组数据的存储结构。 算法,就是操作数据的一组方法。 数据结构是为算法服务的,算法要作用在特定的数据结构之上。 为什么需要数据结构和算法 来谈谈应用层面的原因。在计算机科学和互联网迅猛发展下,需要计算的数据量越来越庞大。但是计算机的计算能力是有限的,这么大量的数据计算,需要越来越多的计算机,需要越来越长的计算时间,注重效率的我们需要尽可能的提高计算效率。其中重要的一项,就是使用合适的数据结构和算法。选用合适的数据结构和算法,特别是在处理体量非常庞大的数据的时候,可以极大提高计算效率。那么,第三个问题来了,我们怎么选用合适的数据结构和算法?有什么衡量标准吗? 怎么样衡量数据结构和算法 需要引入一个衡量的标准(metric)---时间复杂度和空间复杂度。 学习数据结构和算法的基石,就是要学会`复杂度分析`。知道怎么去分析复杂度,才能作出正确的判断,在特定的场景下选用合适的正确的算法。而不是盲目的死记烂背,机械操作。 在本专栏中,重点学习20个最常用的最基础的数据结构和算法,需要我们逐一攻克。 10个数据结构: 数组,链表,栈,队列,散列表,二叉树,堆,跳表,图,Trie树 10个算法: 递归,排序,二分查找,搜索,哈希算法,贪心算法,分治算法,回溯算法,动态规划,字符串匹配算法

    作者回复: 写的好!

    2018-09-24
    7
    334
  • zyzheng
    “学习最好的方法是,找到几个人一起学习,一块儿讨论切磋,有问题及时寻求老师答疑。” 老师说的这个方法非常赞同,之前在学其他内容时经常遇到个人单独学习坚持不下来的问题。这次和公司里有兴趣的同事一起成立了一个五人学习小组,计划每周组织一个小时交流会,每人讲10分钟,自由讨论10分钟,希望能对自己和大家的学习都有帮助,希望能坚持下去✊

    作者回复: 太赞太用心了

    2018-09-24
    3
    320
  • 黄海娜
    学习了,也理解了,当时可以写出代码来,但是长时间就忘记了😣,这个难道真的如果日常不用的话,的确会忘记,那是不是就要先当公式一样记下来再说?

    作者回复: 完全不需要死记硬背的,我也记不住快排,红黑树,但是只要你掌握分析的能力,等你真的需要的时候,花不到半个小时就弄懂了。你要记住的是,这些算法的特点,应用场景,用到了能想到他就好了。

    2018-09-24
    2
    125
  • Joshua 兆甲
    需要教材吗?老师? 自己学习的方法: 排个队想到队列,火车进站想到堆栈,看到树上开花想到树的某些指标,导航想到贪心,将生活场景与算法和数据结构的场景结合起来。 遇到的困难: 应用和实践不行。你看树是数据结构,而大众有更约定俗成的固有看法,切磋估计不大可行,且自己学习,首先需要一个代码开发的条件,不断思考练习,不易坚持。 数据结构不容易可视化呈现。靠画图建立初始的结构,靠脑补数据变化的过程,再靠心算将结果呈现为“可视”图景。中间,一般在机器上就是简单plain text输入输出.不是第一信号系统,接受收效率慢。 没有大图景,只有片面观察。即便会了一招半式,获得敢不强,信心不足,真正应用中,或许没有直接上两个循环嵌套来得直接,明了,易懂。容易生出百无一用是书生的瞎想 以上。老师中秋快乐!循环链表代表我的心。

    作者回复: 写得好 你可以看看大话数据结构和算法图解。里面的学习方法跟你的很相似

    2018-09-25
    2
    95
  • SeLiNnnn
    现在几乎都是一个人学习 在工作室一待就是一天 因为很有目标和动力 现在不存在坚持不下去的状态 有没有人和我一起都无所谓 享受孤独 孤独让人顽强。况且我就是想提升编程能力 锻炼逻辑 并不是为了考试而学 就是我喜欢我愿意花时间和精力 我非常想变得优秀。加油加油!!我就好好学好好练 每天都鼓励自己。

    作者回复: 加油💪

    2018-09-25
    6
    63
  • Rookie
    我想问问用JavaScript真能实现这些算法跟数据结构吗?

    作者回复: 我觉得能 后面如果你觉得不能你就再给我留言吧

    2018-09-24
    7
    38
  • 确认过眼神
    本人学的Java,想通过这个课程学习如何把数据结构和算法切实的用到编程中,来实现用空间换时间。 1、提高每个接口的访问速度,可否实现? 2、时间复杂度越高,执行效率越低吗? 3、两张表联查后再遍历查询第三张表是否比三张表联查效率高?利用数据结构和算法是否有更优的解决方案? 希望老师给出三个问题的答案,伙伴们一起讨论。

    作者回复: 1. 学习的过程可以锻炼你的性能意识,写代码的时候会不自觉的考虑性能问题,所以写出低效代码的情况就少了 2. 理论上是的,但实际上时间复杂度与执行时间并不划等号,我后面会讲到,有时候O(logn)的算法要比O(1)算法还快 3. 这个没有确切的场景我也不好说,你可以自己测试一下。 一般来说,海量数据的存储一般都是分库分表,所以join操作可能就无法用上了。

    2018-09-24
    2
    33
  • 五岳寻仙
    老师给的思路非常非常清晰,不愧是IT大牛,我很喜欢这种结构化的思维方式,相信同学也有同感! 已经决定严格跟随老师的思路这门课。在执行前遇到三个困难: 1. 想请老师推荐刷题的地方; 2. 想知道每种算法和数据结构在现实中的应用场景,因为很多时候不是学不懂,是积极性不够,所以我觉得只有意识到它的重要作用,才会深入地钻研。 3. 没有交流的对象和途径,希望咱们专栏能有个微信群,方便交流。(我微信jjjzzz2014,期待和各位同学一起交流成长!)

    作者回复: 1. 刷题的话leetcode比较火 2. 会讲的 放心 3. 暂时就在留言区交流吧

    2018-09-24
    2
    27
  • 一周
    以前学的时候不专心,工作之后发现用的时候就后悔了,现在想着补一下基础这一块,但新的技术又不断的出现,需要不断学习,感觉好累,想问下大牛,新知识和基础之间该如何取舍?谢谢

    作者回复: 现夯实基础。 新的框架 工具 技术太多了 学了之后如果项目中用不上 很快就忘了 就只能权当是开拓眼界了

    2018-09-25
    2
    23
  • 李二木
    最近半年听吴军老师专栏经常讲算法,彻底颠覆了我对算法的肤浅认识。以前总是认为算发只能解决与计算机有关的的问题。而吴军老师却是以算法和生活连接,通过算法思维来讲解我们生活中遇到的困惑。少做无用功,跳出死循环,算法以成为生活哲学。原来算法也可以这样接地气。对于计算机行业的从业者越听越惭愧,所以就想重新学习下算法(大学也没学懂),这次学习的心态不再像以前那样了,好奇心态多了些,恐惧心态少了些! 刚好又在对时间遇到对的王争老师,接下来,期待王老师的娓娓道来!

    作者回复: 嗯嗯 欢迎你来听我的专栏

    2018-09-26
    4
    22
收起评论
显示
设置
留言
99+
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部