数据结构与算法之美
王争
前Google工程师
立即订阅
69152 人已学习
课程目录
已完结 74 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 从今天起,跨过“数据结构与算法”这道坎
免费
入门篇 (4讲)
01 | 为什么要学习数据结构和算法?
02 | 如何抓住重点,系统高效地学习数据结构与算法?
03 | 复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?
04 | 复杂度分析(下):浅析最好、最坏、平均、均摊时间复杂度
基础篇 (38讲)
05 | 数组:为什么很多编程语言中数组都从0开始编号?
06 | 链表(上):如何实现LRU缓存淘汰算法?
07 | 链表(下):如何轻松写出正确的链表代码?
08 | 栈:如何实现浏览器的前进和后退功能?
09 | 队列:队列在线程池等有限资源池中的应用
10 | 递归:如何用三行代码找到“最终推荐人”?
11 | 排序(上):为什么插入排序比冒泡排序更受欢迎?
12 | 排序(下):如何用快排思想在O(n)内查找第K大元素?
13 | 线性排序:如何根据年龄给100万用户数据排序?
14 | 排序优化:如何实现一个通用的、高性能的排序函数?
15 | 二分查找(上):如何用最省内存的方式实现快速查找功能?
16 | 二分查找(下):如何快速定位IP对应的省份地址?
17 | 跳表:为什么Redis一定要用跳表来实现有序集合?
18 | 散列表(上):Word文档中的单词拼写检查功能是如何实现的?
19 | 散列表(中):如何打造一个工业级水平的散列表?
20 | 散列表(下):为什么散列表和链表经常会一起使用?
21 | 哈希算法(上):如何防止数据库中的用户信息被脱库?
22 | 哈希算法(下):哈希算法在分布式系统中有哪些应用?
23 | 二叉树基础(上):什么样的二叉树适合用数组来存储?
24 | 二叉树基础(下):有了如此高效的散列表,为什么还需要二叉树?
25 | 红黑树(上):为什么工程中都用红黑树这种二叉树?
26 | 红黑树(下):掌握这些技巧,你也可以实现一个红黑树
27 | 递归树:如何借助树来求解递归算法的时间复杂度?
28 | 堆和堆排序:为什么说堆排序没有快速排序快?
29 | 堆的应用:如何快速获取到Top 10最热门的搜索关键词?
30 | 图的表示:如何存储微博、微信等社交网络中的好友关系?
31 | 深度和广度优先搜索:如何找出社交网络中的三度好友关系?
32 | 字符串匹配基础(上):如何借助哈希算法实现高效字符串匹配?
33 | 字符串匹配基础(中):如何实现文本编辑器中的查找功能?
34 | 字符串匹配基础(下):如何借助BM算法轻松理解KMP算法?
35 | Trie树:如何实现搜索引擎的搜索关键词提示功能?
36 | AC自动机:如何用多模式串匹配实现敏感词过滤功能?
37 | 贪心算法:如何用贪心算法实现Huffman压缩编码?
38 | 分治算法:谈一谈大规模计算框架MapReduce中的分治思想
39 | 回溯算法:从电影《蝴蝶效应》中学习回溯算法的核心思想
40 | 初识动态规划:如何巧妙解决“双十一”购物时的凑单问题?
41 | 动态规划理论:一篇文章带你彻底搞懂最优子结构、无后效性和重复子问题
42 | 动态规划实战:如何实现搜索引擎中的拼写纠错功能?
高级篇 (9讲)
43 | 拓扑排序:如何确定代码源文件的编译依赖关系?
44 | 最短路径:地图软件是如何计算出最优出行路径的?
45 | 位图:如何实现网页爬虫中的URL去重功能?
46 | 概率统计:如何利用朴素贝叶斯算法过滤垃圾短信?
47 | 向量空间:如何实现一个简单的音乐推荐系统?
48 | B+树:MySQL数据库索引是如何实现的?
49 | 搜索:如何用A*搜索算法实现游戏中的寻路功能?
50 | 索引:如何在海量数据中快速查找某个数据?
51 | 并行算法:如何利用并行处理提高算法的执行效率?
实战篇 (5讲)
52 | 算法实战(一):剖析Redis常用数据类型对应的数据结构
53 | 算法实战(二):剖析搜索引擎背后的经典数据结构和算法
54 | 算法实战(三):剖析高性能队列Disruptor背后的数据结构和算法
55 | 算法实战(四):剖析微服务接口鉴权限流背后的数据结构和算法
56 | 算法实战(五):如何用学过的数据结构和算法实现一个短网址系统?
加餐:不定期福利 (6讲)
不定期福利第一期 | 数据结构与算法学习书单
不定期福利第二期 | 王争:羁绊前行的,不是肆虐的狂风,而是内心的迷茫
不定期福利第三期 | 测一测你的算法阶段学习成果
不定期福利第四期 | 刘超:我是怎么学习《数据结构与算法之美》的?
总结课 | 在实际开发中,如何权衡选择使用哪种数据结构和算法?
《数据结构与算法之美》学习指导手册
加餐:春节7天练 (7讲)
春节7天练 | Day 1:数组和链表
春节7天练 | Day 2:栈、队列和递归
春节7天练 | Day 3:排序和二分查找
春节7天练 | Day 4:散列表和字符串
春节7天练 | Day 5:二叉树和堆
春节7天练 | Day 6:图
春节7天练 | Day 7:贪心、分治、回溯和动态规划
加餐:用户学习故事 (2讲)
用户故事 | Jerry银银:这一年我的脑海里只有算法
用户故事 | zixuan:站在思维的高处,才有足够的视野和能力欣赏“美”
结束语 (2讲)
结束语 | 送君千里,终须一别
第2季回归 | 这一次,我们一起拿下设计模式!
数据结构与算法之美
登录|注册

不定期福利第一期 | 数据结构与算法学习书单

王争 2018-09-30
你好,我是王争。欢迎来到不定期更新的周末福利时间。
专栏已经上线两周了,看到这么多人在留言区写下自己的疑惑或者观点,我特别开心。在留言里,很多同学让我推荐一些学习数据结构与算法的书籍。因此我特意跟编辑商量了,给你一个周末福利。所以这一期呢,我们就来聊一聊数据结构和算法学习过程中有哪些必读书籍。
有的同学还在读大学,代码还没写过几行;有的同学已经工作数十年,这之间的差别还是挺大的。而不同基础的人,适宜看的书是完全不一样的。因此,针对不同层次、不同语言的同学,我分别推荐了不同的书。希望每个同学,都能找到适合自己的学习资料,都能在现有水平上有所提高。

针对入门的趣味书

入门的同学,我建议你不要过度追求上去就看经典书。像《算法导论》《算法》这些书,虽然比较经典、比较权威,但是非常厚。初学就去啃这些书肯定会很费劲。而一旦啃不下来,挫败感就会很强。所以,入门的同学,我建议你找一些比较容易看的书来看,比如《大话数据结构》和《算法图解》。不要太在意书写得深浅,重要的是能不能坚持看完。
大话数据结构》 这本书最大的特点是,它把理论讲得很有趣,不枯燥。而且每个数据结构和算法,作者都结合生活中的例子进行了讲解, 能让你有非常直观的感受。虽然这本书有 400 多页,但是花两天时间读完,应该是没问题的。如果你之前完全不懂数据结构和算法,可以先从这本书看起。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《数据结构与算法之美》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(120)

  • nkulpj
    老师推荐的书80以上都看过,总结一下:
    1:《算法第四版》Java语言写的,不过动态规划(没记错的话)没有涉及、很厚!这本书挺推荐的、特别是javaer!
    2:《剑指offer》个人觉得题目经典都是老题!但是难度好像很一般啊(还是学生 不太清楚面试内容)、然后里面确实讲了一些很细的东西值得学习!还有本书所有题目作者都提供了C代码和大量的测试案例!nice;
    3:编程珠玑:国外作者,这本书我看了不多 但是初步觉得好像是对超大量数据处理的算法!
    4:编程之美:微软的书、难度较高、题目很深!这本书里面的题 代码不超过2页的估计作者都不会选上!!!!书不厚 、一般般
    5:数据结构和算法分析:我们大学教材!我们老师教的书里都有、代码是伪代码!
    6:算法导论:这本书我用来垫电脑!很厚 很无聊0.0!!!

    作者回复: 👍

    2018-09-30
    150
  • 呵呵
    这个图是编辑妹子辛辛苦苦手绘的,尔等以为一个软件能搞成这样么?
    2018-09-30
    1
    139
  • 千凡谷梦
    老师推荐的书大部分我都了解过,写一写我个人的感受吧。
    如果是Java程序员的话,强烈推荐《算法》,书中的代码特别的简洁,水准特别高。书的配套资源也相当不错,B站有教学视频、Github有官方代码、还有专门的测试数据。
    至于轻松一些的《大话数据结构》,代码和书的基本源于严蔚敏老师的《数据结构》。代码是C语言,但因为作者没有考虑工程上的抽象,代码的水准并不是特别高,至少,我个人是不太喜欢那种编码方式。
    《算法图解》很薄,图的风格我也很喜欢,非常基础,小白入门首选。代码实现是基于Python。
    《算法导论》能啃下来,就够了。但是全书伪代码,如果能把公式搞懂、代码自己实现一次,基本上足以秒杀绝大多人了。如果想读懂这本书,必要的级数、概率还是要学一下的。
    接下来,垫笔记本电脑的《计算机程序设计艺术》。这套书非常伟大,据说高德纳老爷子刚写了两卷就拿到了图灵奖。时间复杂度理论分析算法也是高德纳老爷子奠定的,大半个算法领域的结论几乎都是高德纳老爷子证明的。如果你真想读这本书,首先我要告诉你,书中代码是古老的MIX汇编,其次,你可能需要更多的数学基础。就如同书中所说,必要的复变函数的基础是必要的。
    如果你想提高一下个人的计算机数学功底,为了算法的话,可以读《离散数学及其应用》。当然,如果你想要啃《算法导论》或者近距离膜拜《计算机程序设计艺术》,推荐高德纳老爷子参与编著的《具体数学》。
    我自己觉得,掌握《算法导论》一书的90%,就已经是非常、非常优秀的程序员了。殿堂级的书买回来收藏、垫笔记本电脑或者显示屏,实在不行,镇宅辟邪也是极好的,就没必要费力地读了。😂

    作者回复: 👍

    2018-09-30
    1
    124
  • 李易峰的峰
    老师,那个图片是用什么软件做的呀
    2018-09-30
    46
  • 观弈道人
    能有这个能力,两天时间看完(理解)大话数据结构的人,感觉一般不会参与这个专栏的学习吧~

    作者回复: 😂

    2018-10-01
    37
  • LAMBO
    买了十几个专栏,看下来,还是觉得王争大神的专栏质量最高。
    2018-11-04
    27
  • A_foreign 이호연 wuli 혜리
    程序员代码面试指南 左程云。王老师觉得怎么样
    2018-09-30
    22
  • yongxiang
    向大家推荐 清华 邓俊辉 《数据结构(c++语言版)(第3版)》,豆瓣评分9.3,这本书是我目前遇到的唯一一本能有兴趣翻开的数据结构的书,可以坚持粗略地翻一遍,其他的书一翻开,密密麻麻的文字和代码,直接想睡觉,而这本书看起来就很舒服,而且是少有的彩色印刷。
    非常重要的是,邓俊辉老师还替这本书录制了配套的视频公开课,非常受欢迎,里面有各种形象生动的动画,可以在 edx 或者 学堂在线 上免费观看学习。邓老师的课可以说颠覆了我对数据结构与算法课的认知(想想普通大学上课,拿一本密密麻麻满是文字和代码的书,上课就是老师读课本,黑板上写,真的是疯了)。
    我把视频和书本粗略地过了一遍,如果没有这个专栏,我接下去深入学习数据结构与算法,肯定使用这本书和对应的公开课。
    不过,由于我水平有限,目前没有深入学习,讲的只是我目前的印象。老师如果有空,也可以点评一下书和公开课,看看适合什么基础的人使用。
    2018-10-11
    21
  • BeautifulSoup
    数据结构真的很重要,真的很重要,真的很重要。像我大一的时候,没有人督促,我还能认真的将课本伪代码认认真真用c语言实现一遍,而我自从开始安卓开发,后来到现在一直做后台,其中大多都是轮子,就算能有几个分布式的问题,基本的解决方案也够了。至少目前为止,自己感觉,自己的路好像越走越窄了,从前天去北邮研究生导师给我面试,我当时才发现,我原来是走的远了,走的偏了,数据结构都被我丢了,怪不得我水平越来越低了唉。导致我面试结构也很差,以后一定以数据结构和算法为核心。你可以不会前段,可以不会移动端,可以不会后台,但是你一定要会数据结构!!!!!!

    作者回复: 👍

    2018-10-01
    20
  • 晶晶
    谢谢老师的推荐 已购入大话数据结构和算法图解 参加这个课程很机缘巧合 主要目的是为了提升自我给6岁宝贝通过简单有趣的方式灌输一些计算机基础知识 准备把这两本书的内容吃透编成一些小游戏和孩子玩起来
    2019-02-12
    2
    16
  • 落叶🍂建良
    很棒的周末福利,但是在刷了留意之后就慌了,难道没有人打算用javascript实现一遍☺
    2018-09-30
    1
    16
  • Nirvanaliu
    向大家推荐一本可以配套 严蔚敏老师 《数据结构》学习的代码书。高一凡的《数据结构与算法解析》,西电的高老师,用C 把严的伪代码全部实现,并能运行,非常生猛。

    作者回复: 严老师写的我也觉得不错

    2018-09-30
    15
  • 玉皇大亮
    老师推荐的书大部分都了解过,比如算法导论啃到二叉树就啃不动了,啃不动的原因主要是课后题就算自己回答了,也不知道是否正确,我觉得学习是需要反馈的,学习成果需要验证,老师可否提供一些资料可以辅助算法导论这本书的学习呢?谢谢,另祝假期愉快
    2018-09-30
    13
  • 耿老的竹林
    感谢周末的福利。书籍推荐的确实不少,有空看看工作中实用的,谢谢。另外有个建议,可以剖析一些开源代码,看看其中那些地方有用到算法,比如hash,二叉树,排序查找算法,这些看似简单的算法究竟实际怎么用的,估计印象更深,这也是最近思考项目中,哪些地方用到了算法的一些收获。

    作者回复: 实战部分的5篇基本都是分析开源项目

    2018-09-30
    12
  • 安静的boy
    老师,上篇文章问的问题,你没有回答我,我又看了几遍还是不明白。希望看到给我解答一下。
    上篇均摊时间复杂度 insert 那个例子用加权时间复杂度分析。 1 * 1 / ( n + 1 ) + 1 * 1 / ( n + 1 ) + … + 1 * 1 / ( n + 1 ) + n * 1 / ( n + 1 )= O ( 1 )这个公式怎么推出来等于 O ( 1 )的。按照我的理解 n 个 1 / ( n + 1 )相加再与 n / ( n + 1 )相加应该是 2n / ( n + 1 )才对。而这个结果也化不成 O (1) 呀。我真的是百思不得其解。还请老师帮忙解答下,谢谢!

    作者回复: 不好意思 留言太多 有时候就淹没了 实在抱歉
    即便是你说的2n/(n+1) 那分子和分母是相同量级的。如果我们忽略分母的1 就简化为2n除以n。就等于2。复杂度上讲过常量级的都可以表示为O(1)

    2018-09-30
    12
  • LucianBen
    老师,我想咨询一下。你写的内容,我这边可以根据我的理解然后写一篇文章发布出去吗?可能会有部分的复制...如果这样,需要得到你的授权吗?
    2018-09-30
    1
    9
  • 玄奘大弟子
    哎,惭愧,大学的时候学习数据结构,还挂科了,从那以后到现在工作三年,都没有接触过数据结构,面试和工作中因为这个吃过的亏跟别提了,真的难以启齿。国庆回来,好好的系统的学习一下数据结构,每个帖子认真的多看几遍,自己记记笔记,那怕把帖子抄一遍,也要做到看一篇掌握一篇,也会按照推荐的书籍,一本一本的啃下来。评论区的优秀评论优秀总结,真的很不错,看评论有时候真心能感觉到差距.....
    2018-10-06
    8
  • 赵阿海
    谢谢老师的推荐,国庆快乐。
    2018-09-30
    8
  • godtrue
    阅后留痕
    惭愧
    争哥推荐的书,有买但没看,这里留个名目,一个个一步步补上来!
    1:入门
    《图解算法》、《大话数据结构》、《啊哈算法》
    2:面试
    《编程之美》、《剑指offer》、《编程珠玑》
    3:编程语言
    《数据结构与算法分析:Java语言描述》
    4:闲暇阅读
    《算法帝国》、《数学之美》、《算法之美》
    5:经典大部头
    《算法导论》、《算法》
    6:殿堂级
    《计算机程序设计艺术》
    2018-10-20
    7
  • 颛顼
    作为一个C++后台开发的,目前正在无聊看《C和指针》,《C++沉思录》,《more effective C++》......

    作者回复: 赞

    2018-09-30
    7
收起评论
99+
返回
顶部