[我的学习之路作文]我的算法学习之路

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

我这些年学习数据结构和算法的总结。

一些不错的算法书籍和教程。

算法的重要性。

初学

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

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

读书计划的第一步是选择书籍,我曾向当时我觉得很牛的”学长”和”大神”请教应该读哪些算法书籍,”学长”们均推荐算法导论,还有几个”大神”推荐计算机程序设计艺术(现在我疑心他们是否翻过这些书),草草的翻了下这两本书发现实在看不懂,但幸运的是我在无意中发现了豆瓣这个神奇的网站,里面有很多质量不错的书评,于是我就把评价很高而且看上去不那么吓人的计算机书籍都买了下来——事实证明豆瓣要比这些”学长”或是”大神”靠谱的多得多。

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

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

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

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

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

入门

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

微软的梦工厂

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

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

算法设计与分析

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

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

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

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

算法引论

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

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

巩固

在微软工程院的实习是我研究生阶段的一个非常非常非常重要的转折点:

做出了一个还说的过去的小项目。

期间百度实习面试受挫,痛定思痛之下阅读了大量的程序设计书。

微软的实习经历成为了我之后简历上为数不多的亮点之一(本屌一没成绩,二没论文,三没ACM)。

这里就不说1和3了(和本文题目不搭边),重点说说2。

然而一件事打断了这段安逸的生活——

百度实习面试

这件事对我产生了很大的震动——

原来自己连百度实习面试都过不去。

原来自己还是一个编程弱逼。

原来自己还是一个算法菜逼。

ElementsofProgramming

由于一直觉得名字里带”Elementsof”的都是酷炫叼炸天的书,所以我几乎是毫不犹豫的买了这本ElementsofProgramming(中译本:编程原本),事实上这本书里的代码(或者说STL的代码)确实是:快,狠,准,古龙高手三要素全齐。

CInterfacesandImplementation

严格来说上面两本书都不是传统的算法书,因为它们侧重的都不是算法,而是经典算法的具体实现(Implementation),然而这正是我所需要的:因为算法的原理我能说明白,但要给出优雅正确简练的实现我就傻逼了,哪怕是stof这种简单到爆的”算法”。

依然是以前的傻逼学习方法:反复研读+一遍又一遍的把代码抄写到本子上,艰难的完成了这两本书后,又读了相当数量的编程实践(ProgrammingPractice)书籍,自我感觉编程能力又大幅提升,此外获得新技能——纸上编码。这也成为了我之后找工作面试的三板斧之一。

应用

所以那些动则就扯什么算法啊基础啊内功啊所谓的大牛们,请闭上你的嘴,条条大道通罗马。算法并不是编程的前提条件,数学也不会阻碍一个人成为优秀的程序员。至少在我看来,什么算法基础内功都是唬人的玩意,多编点能用的实用的程序才是王道,当然如果你是一个puretheorist的话就当我什么都没说好了。

LL(k)

我在微软实习的第一个项目做的是代码覆盖率分析——计算T-SQL存储过程的代码覆盖率。

阅读了块覆盖的定义后,我发现我需要对T-SQL进行语法分析,在没有找到一个好用的T-SQLParser的情况下,只能自己动手搞一个:

比较奇诡的是,做这个项目时当时我刚好把ANTLR作者的LanguageImplementationPatterns(中译本:编程语言实现模式)看了一半,什么LL(k)啊Packrat啊ASTWalker的概念啊正热乎着呢。

于是,自己自己就照着T-SQL的官方EBNF,三下五除二撸了一个T-SQL存储过程的LL(k)Parser,把代码转换成AST,然后用一个ExternalASTWalker生成代码块覆盖的HTML报表,全部过程一周不到。

老大自然是很满意——我疑心他的原计划是花两三个月来完成这个项目,因为这个项目之后的两个月我都没什么活干,天天悠哉游哉。

拼音索引

拼音索引是我接的一个手机应用私活里的小模块,用户期待在手机文本框可以根据输入给出智能提示:

比如说输入中国:

同样,输入拼音也应给出提示:

痛骂MS坑爹+汉字坑爹之余,还是得自己撸一个库出来:

首先把那两万个汉字搞了出来,排序,然后弄成一个超长的字符串。

接下来用Int16索引了汉字所有的拼音(貌似500多个)。

再接下来用Int64建立汉字和拼音的关联——汉字有多音字,所以需要把多个拼音pack到一个Int64里,这个简单,位操作就搞定。

最后用二分+位移Unpack,直接做到从汉字到拼音的检索。

后来小测了下性能,速度是MS原来那个库的五十倍有余,而代码量只有336行。

用户很happy——因为我捎带把他没想到的多音字都搞定了,而且流畅的一逼。

我也很happy,因为没想到自己写的库居然比MS的还要快几十倍,同时小十几倍。

从这个事情之后我变得特别理解那些造轮子的人——你要想想,如果你需要一个飞机轮子但市场上只有自行车轮子而且老板还催着你交工,你能怎么搞。

快速字符串匹配

前面提到在微软实习时老大扔给我一个WindowsPhone让我研究下,我当时玩了玩就觉着不太对劲,找联系人太麻烦。

比如说找”张晓明”,WP只支持定位到Z分类下——这意味着我需要在Z分类下的七十多个联系人(姓张的姓赵的姓钟的等等)里面线性寻找,每次我都需要滑动四五秒才能找到这个张姓少年。

这TMD也太傻逼了,本屌三年前的老破NOKIA都支持首字母定位,996->ZXM->张晓明,直接搞定,尼玛一个新时代WindowsPhone居然会弱到这个程度。

搜了一下发现没有好用的拨号程序,于是本屌就直接撸了一个支持首字母匹配的拨号程序出来扔到WP论坛里。

结果马上就有各种问题出现——最主要的反映是速度太慢,一些用户甚至反馈按键有时要半秒才有反应。本屌问了下他的通讯录大小:大概3000多人。

吐槽怎么会有这么奇葩的通讯录之余,我意识到自己的字符串匹配算法存在严重的性能问题:读取所有人的姓名计算出拼音,然后一个个的匹配——结果如果联系人数量太多的话,速度必然拙计。

于是我就开始苦思冥想有没有一个能够同时搜索多个字符串的高端算法,以至于那两天坐地铁都在嘟囔怎么才能把这个应用搞的快一些。

最终还是在AlgorithmsonStrings,TreesandSequences里找到了答案——确实有能够同时搜索多个字符串的方法:Tries,而且这本书还用足足一章来讲怎么弄Multiplestringcomparison,看得我当时高潮迭起,直呼过瘾。

具体细节不多说,总之换了算法之后,匹配速度快了大约九十多倍,而且代码还短了几十行。哪怕是有10000个联系人,也能在0.1秒内搞定,速度瓶颈就这样愉快的被算法搞定。

WritingEfficientPrograms

之后又做了若干个项目,多多少少都用到了”自制”的算法或数据结构,最奇诡的一次是写一个电子书阅读器里的分页,我照着模拟退火(SimulatedAnnealing)的原理写了一个快速分页算法,事实上这个算法确实很快——但问题是我都不知道为啥它会这么快。

总之,算法是一种将有限计算资源发挥到极致的武器,当计算资源很富余时算法确实没大用,但一旦到了效率瓶颈算法绝壁是开山第一刀(因为算法不要钱嘛!要不还得换CPU买SSD升级RAM,肉疼啊!!)。一些人会认为这种说法是有问题,因为编写新算法的人力成本有时比增加硬件的成本还要高——但别忘了增加硬件提升效率也是建立在算法是Scalable的基础上——说白了还是得撸算法。

说到优化这里顺带提一下WritingEfficientPrograms——很难找到一本讲代码优化的书(我疑心是自从Knuth说了过早优化是万恶之源之后没人敢写,万恶之源嘛,写它干毛),注意这本书讲的是代码优化——在不改变架构、算法以及硬件的前提之下进行的优化。尽管书中的一些诸如变量复用或是循环展开的trick已经过时,但总体仍不失为一本好书。

提高

实习实习着就到了研二暑假,接下来就是求职季。

求职季时我有一种莫名的复仇感——尼玛之前百度实习面试老子被你们黑的漫天飞翔,这回求职老子要把你们一个个黑回来,尼玛。

现在回想当时的心理实属傻逼+幼稚,但这种黑暗心理也起了一定的积极作用:我丝毫不敢有任何怠慢,以至于在5月份底我就开始准备求职笔试面试,比身边的同学早了两个月不止。

我没有像身边的同学那般刷题——而是继续看书抄代码学算法,因为我认为那些难得离谱的题面试官也不会问——事实上也是如此。

AlgorithmDesignManual

因为很多CodingInterview的论坛都提到这本红皮书,我也跟风搞了一本。事实证明,仅仅是关于BacktrackTemplate那部分的描述就足以值回书价,更不用说它的Heuristics和课后题。

编程珠玑&更多的编程珠玑

这两本书就不用多介绍,编程珠玑和更多的编程珠玑,没听说过这两本书请自行面壁。前者偏算法理论,后者偏算法轶事,前者提升能力,后者增长谈资,都值得一读。

TheScienceofProgramming

读到编程珠玑里面关于BinarySearch的正确性证明时我大呼过瘾,原来程序的正确性也是可以推导的,然后我就在那一章的引用里发现DavidGries的TheScienceofProgramming。看名字就觉得很厉害,直接搞了一本开撸。

不愧为编程珠玑引用的书籍,撸完TheScienceofProgramming之后,本屌获得了证明简单代码段的正确性这个技能——求职面试三板斧之二。

证明简单代码段的正确性是一个很神奇的技能——因为面试时大多数公司都会要求在纸上写一段代码,然后面试官检查这段代码,如果你能够自己证明自己写的代码是正确的,面试官还能挑剔什么呢?

之后就是各种面试,详情见之前的博客,总之就是项目经历、纸上代码加正确性证明这三板斧,摧枯拉朽。

进化

求职毕业季之后就是各种Happy,Happy过后本屌发现即将面临另一个问题:算法能力不足。

因为据说以后的同事大多是ACM选手,而本屌从来没搞过算法竞赛,而且知道的算法和数据结构都极为基础:像那些元胞自动机、斐波那契堆或是线段树这些高端数据结构压根只是能把它们的英文名称拼写出来,连用都没用过,所以心理忐忑的一逼。

为了不至于到时入职被鄙视的太惨烈,加上自己一贯的算法自卑症,本屌强制自己再次学习算法:

算法(第四版)

算法(第四版)是我重温算法的第一本书,尽管它实际就是一本数据结构的入门书,但它确实适合当时已经快把算法忘光的本屌——不为学习,只为重温。

这本书最大的亮点在于它把Visualization和Formatting做到了极致——也许它不是最好的数据结构入门书,但它绝壁是我读过的排版最好的书,阅读体验爽的一逼;当然这本书的内容也不错,尤其是红黑树那一部分,我想不会有什么书会比此书讲的更明白。

6.851AdvancedDataStructures

AdvancedDataStructures是MIT的高级数据结构教程,为什么会找到这个教程呢?因为GoogleAdvancedDataStructures第一个出来的就是这货。

这门课包含各种让本屌世界观崩坏的奇诡数据结构和算法,它们包括但不限于:

带”记忆”的数据结构(DataStructurewithPersistence)。

o(lglgn)的BST。

总结

从接触算法到现在,大概七年:初学时推崇算法牛逼论,实习后鼓吹算法无用论,读研后再被现实打回算法牛逼论。

怎么这么像辩证法里的肯定到否定再到否定之否定。

现在来看,相当数量的鼓吹算法牛逼论的人其实不懂算法的重要性——如果你连用算法解决实际问题的经历都没有,那你如何可以证明算法很有用?而绝大多数鼓吹算法无用论的人不过是低水平码农的无病呻吟——他们从未碰到过需要用算法解决的难题,自然不知道算法有多重要。

PeterNorvig曾经写过一篇非常精彩的SICP书评,我认为这里把SICP换成算法依然适用:

Touseananalogy,ifalgorithmswereaboutautomobiles,itwouldbeforthepersonwhowantstoknowhowcarswork,howtheyarebuilt,andhowonemightdesignfuel-efficient,safe,reliablevehiclesforthe21stcentury.Thepeoplewhohatealgorithmsaretheoneswhojustwanttoknowhowtodrivetheircaronthehighway,justlikeeveryoneelse.

MIT教授ErikDemaine则更为直接:

Ifyouwanttobecomeagoodprogrammer,youcanspend10yearsprogramming,orspend2yearsprogrammingandlearningalgorithms.

总而言之,如果你想成为一个码农或是熟练工(CodeMonkey),你大可以不学算法,因为算法对你确实没有用;但如果你想成为一个优秀的开发者(Developer),扎实的算法必不可少,因为你会不断的掉进一些只能借助算法才能爬出去的坑里。

以上。

我的算法学习之路

在如今这个世界上,艺术五花八门,有人在学习作为中国国粹的国画;有人在学习风度潇洒的拉丁舞;有人在学习修身养性的围棋;而我呢?既不学习拉丁舞,也不热衷围棋,而是在学习中国古典音乐的浓缩——竹笛。

想知道我是怎样走上竹笛之路的吗?那是去年的一个夜晚,妈妈带着我在街上玩,突然,我的耳畔响起了一阵既悠扬又颇具古典风味的声音。“妈妈,那是什么传出的声音?”我好奇地问道,“是笛子”妈妈揭开了我心中的谜团,从此,我的心中萌生学习竹笛的念头。于是当从佳艺琴行传出我吹响的第一个音符时,我便迈出了学习竹笛的第一步。

如今,竹笛已经成了我最好的“朋友”。闲着没事干时,吹奏一首“姑苏行”,领略“姑苏城外寒山寺”和美妙景象,宁静的引子,是一幅晨雾依稀、楼台亭阁、小桥流水的诱人画面。抒情的行板,使游人尽情观赏精巧秀丽的姑苏园林。热情的小快板,游人嬉戏,情溢于外。稍慢的行板,如同夕阳西下,游人恋恋不舍离去。乐曲如同描绘江南美景的()水墨丹青,亦如雨前清茗,使人沉浸其中。

还有,竹笛也成了展示自我的舞台,在一次比赛中,才艺展示这一轮,我凭借竹笛一举夺得三等奖,从此,我更加喜欢我的“好朋友”了。

竹笛,是你,给我生活增添了乐趣;是你,给了我遨游音乐天空的翅膀。谢谢你,竹笛!

学习之路,脚印深深

厦门大学教授易中天在一次登山活动中感慨道:“人生就像登山,不一定每个人都能爬到山顶,但爬了就好;不一定每个人都要登到山顶,但一定要一步一个脚印。”

学习,是一条漫长的道路,它伴随着人的一生,俗话说:学无止境,也大概就是那么个意思。人从一出生那刻起,就开始学习说话,学习如何叫“爸爸妈妈”,到了上学的时候,在学校里要学习知识,等到走出社会后,又开始学习做人的道理,退休了,还要读书看报,关心时事。人的一生,便是在这样的学习中度过。

然而,在我们的学习过程中,应该注重学习的过程,掌握学习的方法,理解学习的真谛,一步一个脚印,踏踏实实地去学,不能幻想出现一把《哈利波特》中的魔扫,将自己一下子带到成功的峰顶。

考试,是检验学习成果的标准之一,平时学习刻不刻苦,在考试中便能一试便知。在考场上,如果你仔细观察的话,便可根据考生的表情来断定该生的学习是否刻苦,是否真正学懂。表情轻松自然的,做起试卷来看上去一点都不费劲的,那就是平时学习努力的同学。眉头紧锁的,表情木讷的,笔在手中转来转去的,那就是平时学习懒散的同学了。

但是,有的同学平时不愿怎么去努力,可又想在考试中考出好成绩,于是,他们想到了作弊。他们在考场上想尽一切办法来抄袭,什么手机呀,什么MP4呀,什么电子词典呀,真是“八仙过海,各显神通”,几乎恨不得将世界上所有高科技都带上考场,而有的同学没有高科技的,就想到了最原始的方法——传纸条,尽管这种方法很容易被逮,但为了“大业”,也只能这样了。

他们在考场上一边提防着监考老师,一边忙着和同学传答案,真像以前抗战时的地下党,错,准确地说是潜伏在我党的特务。这些同学被高分的成绩迷惑了双眼,不管三七二十一还是二十二,也不顾违反校规校纪,为了能够取得高分,不择手段,因此他们并没有领悟到学习的真谛。

就如我们去游览某座名山时,有人会选择坐缆车,也有人会选择徒步登山。选择坐缆车的游客能够很快地到达山顶,并能在坐缆车的过程中鸟瞰整座山的全景,但选择徒步登山的游客则能欣赏沿途迷人的风景,和身边的小动物一起跳舞,将自己置身于大自然中,经受大自然的熏陶,岂不比坐缆车更愉悦,更舒畅。

在学习中,我们要一步一个脚印,掌握正确的学习方法,理解考试的真正内涵,不能走那些歪门邪道,要通过自身的努力去获取成功的果实,那样的果实才会更美味。学习是要靠平时一步一个脚印积累起来的,没有一步登天的捷径,只有慢慢积累,才能到达胜利的巅峰,即使没有到达顶峰,只要是竭尽全力,就定能散发出自己人生最辉煌的火花。

我的学习书法之路

幼时,我就对书法产生了浓厚的兴趣。那时,看着毛笔在爷爷的手下龙飞凤舞,不一会,一个个漂亮的字就出现在眼前。那时,总觉得,毛笔就像是一根魔术棒,充满了魅力,于是,我就缠着爷爷开始学习写毛笔字。我想,只要我专心练字,刻苦学习,说不定长大了自己会成为一个书法家呢!

看着容易做起来难。刚开始,我是从笔画开始练起的,横、竖、点、撇、捺……一下一下地写,可总也写不好,有时也有些泄气。但想想,将来自己可能会写出一个一个像爷爷写得那样漂亮的字,自己的信心就又回来了。

8岁,我开始报毛笔辅导班正规地进行学习。慢慢地,书法世界的奥秘一一展现在我的眼前:我知道了有篆书、隶书、楷书等字体,还知道有王羲之、王献之、颜真卿等好几个书法大家呢。我的好奇心越来越强,咦!想不到书法艺术越来越神奇了。

到了六年级,因为要升学考试,功课也紧张起来。是不是要放弃呢,我的心里开始动摇起来。看着我的犹豫不定,妈妈说,我带你去书院看看吧,回来后你再自己决定吧!

进了书院,我才发现,我要学习的东西还有很多很多,中国的书法确实是一门博大精深的艺术。看着那里展览的一幅幅书法作品,我的信心又回来了。其中有一副书法作品写得是:“梅花香自苦寒来”,让我心里一动。不!我决不能放弃,既然自己喜欢,就一定要坚持下去。

济南师范学校附属小学六年级:崔宇凡

人生之路

人生对于小时候的你来说是多么漫长的一条路啊!但是对于老了的你来说,是一瞬间、一眨眼的事情。

当你临死时,你就把这条路走完了。你的生死与人生路的长短是有关系的。一个人,如果你不好好珍惜这条路,你是无法退步的,只有当你想起小时候的调皮,不爱学习,老了你才后悔。少壮不努力,老大徒伤悲。如果是这样,你走的一段路也会耗费你父母的一段路。

你自己的人生路,是由你自己走过去的。这条路是不容易的,走这条路会发声许多事情的,每一条路在走的路途中难免有些磕磕碰碰的,上帝既然给你走这条路的机会,你就应该仔细去走这条路。你经历的事情多表示你的路是值得去走的。

你愿不愿意走这条路,看你,其实每一条路都是有意义的。只有努力学习,在小时候努力,老了福是享不完的,你走的这条路的意义有没有!看你对这条路走得是否仔细,是否走好。

相信:是要努力,你的路就有很大的意义。

学习之乐

(一)

已知:桌上一张语文试卷,两张数学试卷,三张英语试卷.

求:能否看一会《挑战主持人》?

解:看会儿《挑战主持人》既能放松自己也有一定乐趣.如果一张试卷用50分钟,我就可以看30分钟,然后提高做题效率,还是可以的,要做到劳逸结合嘛.

答:可以看一会.

批语:学习中寻找乐趣,在学习学会会放松,相信吧,你进入了知识的海洋就不会再想着出来了,做卷子也是一种乐趣,还不起身!

感悟:学习就是要钻之弥坚,越钻就会越感乐趣.

(二)

已知:一共有三骡书.

求;能否多睡一会,不去读书.书是多么枯燥无味,还不如多玩一会,多睡一会那多有意思.

答:可以多睡一会.

批语;书籍是星星之火,点亮手中的灯;书籍,是光明的灯,照亮黑暗的路;书籍,是遥远之路,引你走向黎明.

感悟:书山路勤为径,学海无涯苦作舟.不去细细品味书籍,怎能找到书籍的真谛.

(三)

已知:六点三十就要起床,七点就要去上学.

求;能否晚点去,多懒一会床.

解:学习是多么的苦那么早就要起来,在家里温暖多好,等会打的去学校就行了.

答:可以多懒一会床.

批语:不经历风雨,怎能见彩虹?学习时不吃苦,怎么能知道学习后的甘露>

感悟:一份耕耘一份收获,学习也一样,要想它有乐趣有收获,一定要先耕耘.

后记:学习是快乐的,如果学习时不努力,怎能享受到学习之乐?

篇三:我的算法学习之路

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

原文作者:Lucida

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

读书计划的第一步是选择书籍,我曾向当时我觉得很牛的"学长"和"大神"请教应该读哪些算法书籍,"学长"们均推荐算法导论,还有几个"大神"推荐计算机程序设计艺术(现在我疑心他们是否翻过这些书),草草的翻了下这两本书发现实在看不懂,但幸运的是我在无意中发现了豆瓣这个神奇的网站,里面有很多质量不错的书评,于是我就把评价很高而且看上去不那么吓人的计算机书籍都买了下来——事实证明豆瓣要比这些"学长"或是"大神"靠谱的多得多。

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

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

做出了一个还说的过去的小项目。期间百度实习面试受挫,痛定思痛之下阅读了大量的程序设计书。微软的实习经历成为了我之后简历上为数不多的亮点之一(本屌一没成绩,二没论文,三没ACM)。这里就不说1和3了(和本文题目不搭边),重点说说2。

由于一直觉得名字里带"Elementsof"的都是酷炫叼炸天的书,所以我几乎是毫不犹豫的买了这本ElementsofProgramming(中译本:编程原本),事实上这本书里的代码(或者说STL的代码)确实是:快,狠,准,古龙高手三要素全齐。

严格来说上面两本书都不是传统的算法书,因为它们侧重的都不是算法,而是经典算法的具体实现(Implementation),然而这正是我所需要的:因为算法的原理我能说明白,但要给出优雅正确简练的实现我就傻逼了,哪怕是stof这种简单到爆的"算法"。

首先把那两万个汉字搞了出来,序,然后弄成一个超长的字符串。接下来用Int16索引了汉字所有的拼音(貌似500多个)。再接下来用Int64建立汉字和拼音的关联——汉字有多音字,所以需要把多个拼音pack到一个Int64里,这个简单,位操作就搞定。最后用二分+位移Unpack,直接做到从汉字到拼音的检索。后来小测了下性能,速度是MS原来那个库的五十倍有余,而代码量只有336行。用户很happy——因为我捎带把他没想到的多音字都搞定了,而且流畅的一逼。

比如说找"张晓明",WP只支持定位到Z分类下——这意味着我需要在Z分类下的七十多个联系人(姓张的姓赵的姓钟的等等)里面线性寻找,每次我都需要滑动四五秒才能找到这个张姓少年。

之后又做了若干个项目,多多少少都用到了"自制"的算法或数据结构,最奇诡的一次是写一个电子书阅读器里的分页,我照着模拟退火(SimulatedAnnealing)的原理写了一个快速分页算法,事实上这个算法确实很快——但问题是我都不知道为啥它会这么快。

Algorithms4th

Algorithms是我重温算法的第一本书,尽管它实际就是一本数据结构的入门书,但它确实适合当时已经快把算法忘光的本屌——不为学习,只为重温。

THE END
1.优秀英语作文:网络的利和弊(通用21篇)优秀英语作文:网络的利和弊(通用21篇) 在日常学习、工作和生活中,大家都有写作文的经历,对作文很是熟悉吧,作文是一种言语活动,具有高度的综合性和创造性。那要怎么写好作文呢?下面是小编为大家收集的优秀英语作文:网络的利和弊,仅供参考,欢迎大家阅读。 https://www.ruiwen.com/zuowen/gaozhongyingyuzuowen/658851.html
2.作文范文之英语作文电子产品经管文库(原现金交203.39 KB0个论坛币 GDP和人均GDP平减说明.xls 27 KB0个论坛币 关键词:电子产品作文范文英语作文 https://bbs.pinggu.org/thread-12996794-1-1.html
3.手机的好与坏作文(精选16篇)手机的好与坏作文(精选16篇) 在日常学习、工作抑或是生活中,许多人都有过写作文的经历,对作文都不陌生吧,借助作文可以提高我们的语言组织能力。相信很多朋友都对写作文感到非常苦恼吧,下面是小编为大家整理的手机的好与坏作文,仅供参考,大家一起来看看吧。 https://www.oh100.com/w/225589.html
4.高考英语作文及中文(通用8篇)篇5:高考英语作文及中文 1.我充分认识到群众的力量是无穷的。 2.随着现代科学技术的迅速发展,玩电子游戏正成为影响学生学习的重大问题。 3.我们无法想象,没有了森林,这个世界会变成什么样子。 4.显然,好习惯是成功的捷径。 5.有句名言说道:征服英语不亚于征服一座山。 6.我充分认识到,有关部门应采取一些有效https://www.360wenmi.com/f/filewe6rv28p.html
5.(中学篇)2021年第03期:基于分类讨论的作文构思——从成都市英语作文构思是写好作文的第一步。本文介绍一种能打开写作思路的有效方法——分类讨论,并以两节公开课为案例,探讨它在提升学生写作思维品质中的实践应用,旨在让学生的英语表达上升到逻辑清晰、条理分明的层次。 【关键词】英语作文;分类讨论;作文构思;思维品质 分组与归类是大脑处理信息时的自然特点。大脑喜欢把相似的https://flts.bnu.edu.cn/node/1416
6.我的经历例如, 多媒体黑板、微格教室、多媒体语音训练系统等等电化教育设备的面世, 使英语传播、教学和学习过程中的师生平等互动, 彻底颠覆了传统的教师加黑板加书本为主动体、学生为被动体的课堂英语教与学模式。 其次是个人媒体英语电子载体的市场化。总览今天的英语电子载体学习器市场, 林林总总的专用型或多用型电子词典https://www.99xueshu.com/w/file34ydkqej.html
7.调查报告范文英语作文(精选15篇)在问到针对商务英语专业的学生在大学期间应开设哪些课程为好时,有31、5%的经营者建议开设“商业英语精读”和“商业英语听说”课程;要求开设“国际贸易实务”、“商务礼仪”和“市场营销学”的比重也较大分别为25、6%、14、1%和10、9%;“商务英语写作”占18%,“电子商务”占16、3%,“国际金融”15、3%,“经济学https://www.hrrsj.com/zuowen/zuowendaquan/869003.html
8.2016年翻译硕士专业课真题汇总版考研真题解析六、英语作文写作,20分,300字,你关于反恐的建议,以IS制造巴黎恐怖袭击事件为背景。 Your suggestions of fighting against terrorist attacks. 翻译英语基础: 一、汉译英句子翻译,30分,11个,分值不一样,前几个是2分一个,后几个有3分的,4分的。 https://www.kaoyan.com/zhuanyeke/zhenti/568359dfc9101.html
9.英语作文未来认为它坏,措施 根据图表数据,我们敢肯定去预测。。。(得出一个结论)。建议措施。未来会更好。 每一个格子里学5~8个句子,自由组合,可以写出一样的框架但不一样的英文句子。 引出主题 图表提供了关于(主题词)的信息。 The chart provides information about (主题词) https://blog.csdn.net/weixin_30377461/article/details/101731644
10.十篇英语说明文范文电子教案基础较好的同学,请按照题目要求与提示正常完成写作。 写作注意事项: 1、无论如何要写够字数80词 2、如果实在无法写出完整的符合语法的句子,可以按题目提示的中文顺序罗列你所知道的 英文单词 3、一时想不起如何拼写的英文单词,可以到阅读理解等题目中查找。 万能模板1:(适用所有作文类型) The topic of 此处抄写https://www.360docs.net/doc/d0e2f437094e767f5acfa1c7aa00b52acfc79c80.html
11.中通国际中学怎么样啊六年级科学作文篇3大家好!我方二辩从网络存在真情这一角度,意在说明网络是有情的空间,并不是人门所说的虚拟荒漠的。而三辩则阐明了网络的多元性和信息性,让人们从不同的角度接受到了多元信息,网络的全方位、超时空、互动性和隐蔽性为中学生的社会交往提供了更为广泛的机会。学生可以利用快捷的电子邮件与他人进行远距离交流,这种“https://www.gjxx.com/zhaosheng/168745.html
12.好用的英语电子词典APP推荐好用的英语电子词典下载英语词典想必大家都用过吧,是我们学习英语的重要工具,那电子词典大家有用过吗?小编下面为带来好用的英语电子词典app下载推荐,这些电子词典都是经过官方授权的,里面包含词典的版本齐全,有英译词典,也有美译词典。有这方面需求的朋友们可以到豌豆荚进行下载安装哟。 https://www.wandoujia.com/bangdan/399812/
13.人人都能用英语人人都能用英语大作文写了不到二十篇,小作文7篇。 慎晓嶷‘七天’里的小作文每种图表背了个一篇。 ‘如何准备留学考试系列’里的有力模式、立场选择等文章打印出来、认真读了N遍。 口语 第一部分,准备了九十多道真题,一个英语很好的朋友帮我写的。第二部分,准备了十个左右话题。第三部分,背了经典的句型若干。 https://docs.gechiui.com/kancloud-everyone-can-use-english/
14.背诵课文的好方法作文标签:高考英语高考英语作文高考英语复习资料 出国留学高考网为大家提供背诵高考英语课文最科学的方法,更多高考资讯请关注我们网站的更新! 背诵高考英语课文最科学的方法 1 确定中心形象 通读课文,正确理解每一个单词、每个词组和每个句子,理清楚这些词、句的内在联系以及它们和上下文的关系,然后确立文章的中心形象。 https://www.liuxue86.com/k_%E8%83%8C%E8%AF%B5%E8%AF%BE%E6%96%87%E7%9A%84%E5%A5%BD%E6%96%B9%E6%B3%95%E4%BD%9C%E6%96%87/
15.手机的利与弊英语作文(精选34篇)在我看来,凡事都有好的一面,也有坏的一面。毫无疑问,在某种程度上,手机正在促进社会的发展。所以我们应该适当地使用手机,而不是扔掉它们。 手机的利与弊英语作文 6 A growing number of parents equipped their children with cell phones, who are aimed to keep in touch whenever and wherever, so that theyhttp://zuowen.yjbys.com/qitaleiyingyuzuowen/587090.html
16.讯飞学习机:算法能力与B端校园合作打造坚实护城河主要功能与卖点为电子 词典的英语单词检索和学习 功能。 利用电子词典与用户的紧密 结合度,利用本身固有的存 储器空间,增加辅助内容, 令电子词典附加了不同的辅 助功能。同时,也将学习机 的功能定性在为学生学习所 使用的电子产品。 在2008年左右出现,随着屏幕色彩技术的成熟, 学习机进入彩色屏幕时代。 多媒体与https://blog.51cto.com/u_15720252/6751809
17.商务英语写作书籍商务英语写作书籍哪款好?看实拍,买好货非常好的一套书,效果很好! TOP 2 一天一课新概念英语写作365(第3册) 20000条评价 99% 好评度 买家印象: 印刷上乘(6) 品质一流(6) 优美详细(3) 字体适宜(3) 纸张精良(3) 温馨细腻(2) 适用人群广(1) 轻松有趣(1) 完好无损(1) 做工精良(1) 小孩英文作文不怎么好,听了朋友介绍的书,赶快下单买https://yp.m.jd.com/13765762274444f636e8c.html
18.学习英语方法(转)想要真正的掌握单词,除了要学会正确的拆词,多查阅相关的书籍以外,还涉及到英文字典的使用。 学习英语的人手头必须要有一部英英词典。在字典行业里最变态的产品就是英汉电子词典了,如果你依赖于电子词典这类产品,无论是哪个品牌,想学好英语,那是不可能的。因为电子词典里面词条的解释很多都是错误的,有偏差的。 https://www.douban.com/group/topic/37963834/
19.喜欢使用电子词典,认为使用起来很方便.2.电子词典的英语作文请根据以下提示,写一篇短文 1.很多学生喜欢使用电子词典,认为使用起来很方便.2.电子词典的英语作文 以Electronic Dictionaries Are Not Good 为题 请根据以下提示,写一篇短文1.很多学生喜欢使用电https://www.zybang.com/question/62745f6d8cb12c5651cd06fb61d344de.html