文档章节

Google工程师巩朋的算法之路(1)

o
 osc_w9s1w4o0
发布于 2019/04/03 16:40
字数 1674
阅读 33
收藏 0

精选30+云产品,助力企业轻松上云!>>>

转载自 http://www.tiantianbianma.com/msra-gong-peng-algorithm-one.html/

 

引子

严格来说,本文题目应该是 我的数据结构和算法学习之路,但这个写法实在太绕口。况且CS中的算法往往暗指数据结构和算法(例如 算法导论 指的实际上是 数据结构和算法导论),所以我认为本文题目是合理的。

摘要

  • 我这些年学习数据结构和算法的总结。
  • 一些不错的算法书籍和教程。
  • 算法的重要性。

初学

第一次接触数据结构是在大二下学期的数据结构课程。然而这门课程并没有让我入门——当时自己正忙于倒卖各种MP3和耳机,对于这些课程根本就不屑一顾——反正最后考试划个重点也能过,于是这门整个计算机专业本科最重要的课程就被傻逼的我直接忽略过去了。

直到大三我才反应过来以后还要找工作——而且大二的折腾证明了我并没有什么商业才能,以后还是得靠码代码混饭吃,我当时惊恐的发现自己对编程序几乎一无所知,于是我给自己制订了一个类似于建国初期五年计划的读书成长计划,其中包括C语言基础、数据结构以及计算机网络等方面的书籍。

读书计划的第一步是选择书籍,我曾向当时我觉得很牛的 “学长” 和 “大神” 请教应该读哪些算法书籍,”学长”们均推荐《算法导论》,还有几个”大神”推荐《计算机程序设计艺术》(现在我疑心他们是否翻过这些书),草草的翻了下这两本书发现实在看不懂。后来经过摸索和总结,总结出一系列的算法好书。

1《数据结构与算法分析——C 语言描述》

《数据结构与算法分析——C 语言描述》 是我学习数据结构的第一本书:当时有很多地方看不懂,于是做记号反复看;代码看不明白,于是抄到本子上反复研读;一些算法想不通,就把它所有的中间状态全画出来然后反复推演。事实证明尽管这种学习方法看起来傻逼而且效率很低,但对于当时同样傻逼的我却效果不错——傻人用傻办法嘛,而且这本书的课后题大多都是经典的面试题目,以至于日后我看到 《编程之美》 的第一反应就是这货的题目不全是抄别人的么。

Google工程师巩朋的算法之路(1)

  • 豆瓣评分: 8.9
  • 购买链接: 京东
  • 推荐指数: 五颗星

至今记得,这本书为了说明算法是多么重要,在开篇就拿最大子序列和作为例子,一路把复杂度从 O(N^3) 杀到 O(N^2) 再到 O(NlgN) 最后到 O(N),当时内心真的是景仰之情如滔滔江水连绵不绝,尼玛为何可以这么屌。

此外,我当时还把这本书里图算法之前的数据结构全手打了一遍,后来找实习还颇为自得的把这件事放到简历里,现在想想真是傻逼无极限。

凭借这个读书成长计划中学到的知识,我总算比较顺利的找到了一份实习工作,这是后话。

入门

我的实习并没有用到什么算法(现在看来就是不停的堆砌已有的 API,编写一堆自己都不知道对不对的代码而已),在发现身边的人工作了几年却还在和我做同样的事情之后,我开始越来越不安。尽管当时我对自己没什么规划,但我清楚这绝壁不是我想做的工作。

2《微软的梦工场》

在这个摇摆不定的时刻,《微软的梦工场》 成了压倒骆驼的最后一支稻草,这本书对微软亚洲研究院的描写让我下定了 “找工作就要这样的公司” 的决心,然而我又悲观的发现无论是以我当时的能力还是文凭,都无法达到微软亚研院的要求,矛盾之下,我彻底推翻了自己”毕业就工作”的想法,辞掉实习,准备考研。

  • 豆瓣评分: 7.0
  • 购买链接: 京东
  • 推荐指数: 四颗星

考研的细节无需赘述,但至今仍清楚的记得自己在复试时惊奇且激动的发现北航宿舍对面就是微软西格玛大厦,那种离理想又进了一步的感觉简直爽到爆。

3《算法设计与分析基础》

我的研究生生涯绝对是一个反面典型——翘课,实习,写水论文,做水研究,但有一点我颇为自得——从头到尾认真听了韩军教授的算法设计与分析课程。

Google工程师巩朋的算法之路(1)

  • 豆瓣评分: 8.3
  • 购买链接: 京东
  • 推荐指数: 五颗星

韩军给我印象最深的有两点:课堂休息时跑到外面和几个学生借火抽烟;讲解算法时的犀利和毫不含糊。

尽管韩军从来没有主动提及,但我敢肯定 《算法设计与分析基础》 就是他算法课程事实上的(de-facto)教材,因为他的课程结构几乎和这本书的组织结构一模一样。

如果 《数据结构与算法分析——C语言描述》 是我的数据结构启蒙,那么韩军的课程 算法设计与分析基础 就是我的算法启蒙,结合课程和书籍,我一一理解并掌握了复杂度分析、分治、减治、变治、动态规划和回溯这些简单但强大的算法工具。

4《算法引论》

《算法引论》 是我这时无意中读到的另一本算法书,和普通的算法书不同,这本书从创造性的角度出发——如果说 《算法导论》 讲的是有哪些算法,那么《算法引论》讲的就是如何创造算法。结合前面的 《算法设计与分析》,这本书把我能解决的算法问题数量扩大了一个数量级。

Google工程师巩朋的算法之路(1)

  • 豆瓣评分: 8.9
  • 购买链接: 京东
  • 推荐指数: 五颗星

之后,在机缘巧合下,我进入微软亚洲工程院实习,离理想又近了一步,自我感觉无限牛逼。

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
推荐几个原创高质量技术公众号

Hadoop技术博文
2019/09/01
0
0
如何保持一颗上进的心?

  当下信息获取的速度,已经变成了程序员的核心竞争力之一,基于此,师长我专程整理出一些必备公众号,集科技资讯、技术干货、学习资源一手掌握!和上进的人在一起,不知不觉就会前进!  ...

java进阶架构师
2018/11/28
0
0
叮,您有一份2018年年末互联网技术工具清单,请查收

  所谓互联网寒冬,是说给那些咸鱼听的。规划好技术路线,不要“沉迷”于CRUD,通过提升自己的核心竞争力与不可替代性,越寒冷的冬天反而越暖和。今天师长我在这里推荐8个Java技术圈优质的...

java进阶架构师
2018/12/14
0
0
没有CS文凭,如何通过Google面试?

专栏 | 九章算法 网址 | www.jiuzhang.com 非CS专业毕业,想要通过Google面试是否是异想天开? 并不! 其实很多在IT领域取得惊人成就的大牛并非CS专业毕业。事实上,只要你有足够大的决心,很...

九章算法
2018/10/30
0
0
开发者最佳实践日·第8期-互联网产品从设计到上线 北京站

「互联网产品从设计到上线 北京站」 每当有科技巨头们发布自己的产品之后,我们才能切身地体会到什么叫一个“人人都是产品经理”的时代的来临。圈里圈外的各路大神恨不能亲自操刀,对每个功能...

七牛云
2014/12/09
421
1

没有更多内容

加载失败,请刷新页面

加载更多

会议通知 | 2020中国计算与认知神经科学会议

关于大会关于 计算神经科学以神经生物实验为基础,以建立数学模型,开展计算模拟和分析作为基本手段,来刻画和描述大脑的神经活动,探究神经系统各种复杂活动和认知功能包括注意、学习、记忆...

脑机接口社区
06/02
0
0
大神分享快3怎么算下期和值

大神分享快3怎么算下期和值{叩67790572}使用的标签:constructor-arg标签出现的位置:bean标签的内部标签中的属性type:用于指定要注入的数据的数据类型,该数据类型也是构造函数中某个...

yiren081
8分钟前
0
0
Matlab系列之运算符和标点符号的功能介绍

本来月初就打算接着写的,但是电脑不小心进水,主板什么的都废了,周末才找时间拿去修好,心塞。 就不多讲太多废话了,开始分享今天的内容,对MATLAB的运算符做个介绍,然后再对标点符号进行...

狂人V
07/06
0
0
Java源码系列(1):Comparable和Comparator的区别

在讲Comparable和Comparator区别之前,先补充一个知识点。 先看代码: Person类 1public class Person<T> { 2  private T id; 3 4  public T getId() { 5    return i...

学习Java的小姐姐
2018/09/19
0
0
ThreadPoolTaskScheduler手写调度中心

先贴一个自己写的demo把,原理其实就是这样的。 CronTrigger这个类可以将cron表达式转换成Date,可以查看schedule源码学到不少东西,下面代码就是转换成下一执行时间。 public Date nextEx...

朝如青丝暮成雪
29分钟前
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部