【你问我答】初学者应该如何学习算法?

问题描述:

初学者应该如何学习算法?算法的学习路径是怎样的?

回答有奖:

将于问题截止后,选取一位认真回答问题的牛友,赠送200牛币!

本期回答时间:截止于2019年1月9日
你问我答问题汇总:点击进入

p.s.若至问题截止时间为止,没有理想答案,则问题延期(奖励也同时延期)。

#我也有问题想询问牛友,怎么办?

欢迎私信@筱茜 说明你的问题,将根据问题具体情况排期进入【你问我答】专场~
私信请注明参与【你问我答】专场哦~

你问我答 - 答问题,成大佬,拿牛币!
你问我答是牛客新栏目,每周1期几个问题,
牛友在问题贴下留下自己的知识,经验与见解,
帮助更多牛友了解更多技术相关知识!
#悬赏#
全部评论
初学者如何学习算法? 0、工欲善其事,必先利其技 要想学习好算法,应该对某种编程语言的语法结构有足够深的了解,熟练掌握基本的编程知识。然后在学习算法理论的时候不断Coding,去实践相应算法。 这里重点强调的是基本的知识,包括语法、常用标准函数库等,但不是某些个语言特有的特性,不是一些“骚操作”。算法是通用的,如果说一种算法只能够在支持某种特定功能的编程语言下实现,那么这种算法便失去了广泛流传意义,只需要死记硬背一下,以应对下一次它的出现;算法亦是私有的,面对特定场景,针对特定的业务需求,有时候有一些令人意外的算***让效率得到极大的提高。 举例来说,我们最开始学编程的时候是从HelloWorld写起的。要学会写HelloWorld,我们要知道函数的基本组成结构、标准输出函数是什么、要用到哪些头文件……后面学的越来越复杂了,我们需要知道条件转移、几种循环结构、字符串、数组、二位数组、树、图,队列、栈,等等。我们要知道并且熟悉它们的基本概念和一些常用的操作方法,这些是编程语言通用的,每个编程语言的写法可能会有所不同,比如C里面一个常见的标准输出是printf("Hello, World!"),Java里面的是System.out.println("Hello, World!"),看起来差异很大,其实学完C语言后很好理解Java语言的这种写法。 1、扎实的理论是学好算法的基础 当编程语言基础学习完之后,这时候应该对整个语言有了一个基本的认识和了解,足以应对算法学习中出现的大部分编程知识。 强烈建议你学哪门语言,就用以这门语言来讲解算法的算法书。比如我要学习Java,那我就可以用《算法 第四版》这本书。推荐这么做是因为这可以减少很多不必要的麻烦,请记住我们的目的是为了学习算法,就应当避免在其实不必要的事情上分散精力。 怎么选择书籍这是一个仁者见仁、智者见智的问题。每个人的情况不同,适合每个人的书也不同,最重要的是选择一本书,坚持读下去、读完,坚持本来就是一种成功。(真的不是因为我懒!!)这里不太推荐《算法导论》这本讲解算法的经典知识,因为它太厚了,很容易劝退多数人。想要看懂它需要一定的编程经验和算法基础,建议将它作为后续深入学习算法的工具书。 建议在学习算法理论的时候,把电脑放一边,或者在书桌上留足够大的一片空间,可以放一本or基本书,外加一本草稿。学的时候可以多在草稿本上写写画画,比如学循环队列,你就可以在纸上画一个圆环出来,对着这个圆环理解循环队列的概念和操作,这样方便理解和记忆判断循环队列队空、队满的条件。还可以在纸上写写算法,练练手感。 2、实践是检验真理的唯一标准 学习完算法概念,这时候应该对算法有一个初步的印象,冒泡、快排、先序遍历、后序遍历、层次遍历,应该都熟稔于心。比如知道冒泡是每趟从关键字中找出最大或最小的那个值来,快排是从中挑出一个值,然后小的放左边,大的放右边(或者相反)。但知道算法概念并不代表着能用代码实现,可能很多人会在学完编程基础和算法基础以后,发现好像无从下手,只会写个简单的冒泡、快排,再就写不出了。是不会吗?不应该,如果仔细学了一遍没道理不会;是忘记了吗?刚学完可能会忘一些,但没理由忘的一干二净。关键是缺少训练,练的多了,自然就成老司机了。在学完理论后最开始的那一段时间,可能会很痛苦,感觉很多题看不懂,不明白用什么来做,或者看得懂的,但就是写不出,耗费很多时间,手生得很。选择简单的算法题来几道,慢慢熬就过去了。 推荐几个刷题平台: 牛客网 LeetCode POJ 小米OJ Online
点赞 回复 分享
发布于 2019-01-03 09:04
刷题~抽我~
点赞 回复 分享
发布于 2019-01-03 05:36

相关推荐

老粉都知道小猪猪我很久没更新了,因为秋招非常非常不顺利,emo了三个月了,接下来说一下我的情况吧本人是双非本 专业是完全不着计算机边的非科班,比较有优势的是有两段大厂实习,美团和字节。秋招面了50+场泡池子泡死的:滴滴 快手 去哪儿 小鹏汽车 不知名的一两个小厂其中字节13场 两次3面挂 两次2面挂 一次一面挂其中有2场面试题没写出来,其他的都是全a,但该挂还是挂,第三次三面才面进去字节,秋招加暑期总共面了22次字节,在字节的面评可以出成书了快手面了8场,2次实习的,通过了但没去,一次2面挂 最后一次到录用评估 至今无消息滴滴三面完 没几天挂了 所有技术面找不出2个问题是我回答不上来的,三面还来说我去过字节,应该不会考虑滴滴吧,直接给我干傻了去哪儿一天速通 至今无消息小鹏汽车hr 至今无消息美团2面挂 然后不捞我了,三个志愿全部结束,估计被卡学历了虾皮二面挂 这个是我菜,面试官太牛逼了拼多多二面挂 3道题也全写了 也没问题是回答不出来的 泡一周后挂腾讯面了5次 一次2面挂 三次一面挂,我宣布腾讯是世界上最难进的互联网公司然后还有一些零零散散的中小厂,但是数量比较少,约面大多数都是大厂。整体的战况非常惨烈,面试机会少,就算面过了也需要和各路神仙横向对比,很多次我都是那个被比下去的人,不过这也正常,毕竟谁会放着一个985的硕士不招,反而去招一个双非读化学的小子感觉现在互联网对学历的要求越来越高了,不仅仅要985还要硕士了,双非几乎没啥生存空间了,我感觉未来几年双非想要进大厂开发的难度应该直线上升了,唯一的打法还是从大二刷实习,然后苟个转正,不然要是去秋招大概率是炮灰。而且就我面字节这么多次,已经开始问很多ai的东西了,你一破本科生要是没实习没科研懂什么ai啊,纯纯白给了
不知名牛友_:爸爸
秋招你被哪家公司挂了?
点赞 评论 收藏
分享
评论
点赞
9
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务