A: 我到底该怎么学习算法呀?
(资料图片)
B: 回答这个问题前,我们先来举个例子:如何实现“把大象装进冰箱”?
A: 三步。第一步,把冰箱门打开,第二步,把大象装进去,第三步,把冰箱门带上。
B: 在这个程序中,大象、冰箱,是数据,而“如何把大象装进冰箱”,就是这个程序的算法。
B: 算法一:把大象放在冰箱前,把冰箱门打开,把大象装进去。算法二:把冰箱门打开,把大象放在冰箱门前,然后把大象装进去。算法三:把大象放在冰箱前,把冰箱门打开对准大象,然后把冰箱向着大象推动直至把大象装进去。
B: 实现一种需求,可以设计出多种算法,并且,算法在很大程度上决定了你写出的程序漂不漂亮、巧不巧妙,所以我们学习算法的目的是为了在写程序时能够设计出更优化的方案。
B: 对于初学者来说,可以分成三个阶段进行算法的学习,循序渐进,逐步深入。
A: 快给我讲讲
B : 第一阶段:基于语言去学习数据结构,继续举大象的例子。一个把十头大象装进冰箱的程序,首先要解决的问题是:如何存放这十头大象。你可以把这十头大象用绳子挨个串起来,这样即使大象会乱跑,但只要你一直抓着绳子头,就可以顺藤摸瓜,把十头大象都找到;或者,你可以制作十个紧挨着的格子,然后把每头大象依次放到格子中,这样大象就不会乱跑。在这里我们可以看到,同样是存放十头大象,我们设计出了两种不同的方式,这两种对大象(数据)的存放方式,就是“数据结构”。
B: 每种语言都有一些数据结构,因此可以通过自己熟悉的语言先对数据结构进行了解。
A: 那第二个阶段是什么呢?
B: 第二阶段:基于数据结构去学习基本的算法。
B: 在对数据结构有了一定了解的基础上,就可以对常用的算法进行学习了。比如最基本的各种不同的排序方法:冒泡排序法、选择排序法等等。在此期间,可以加强对“时间复杂度”这一概念的了解,同时开始学习一些更高级的数据结构。
B: 在这个阶段,建议找个OJ(Online Judge) 尝试做题,遇到问题可以更有针对性的学习。
Online Judge会给你一个简单的问题,然后让你编程解决,系统会有很多测试样例。如果你的代码可以通过所有的测试样例,那么说明你的代码逻辑上是正确的。同时OJ都会有一定的内存使用与运行时间限制,过于低效或耗费大量非必要空间的算法将不会通过测试。
A: 那最后一个阶段是啥呢?
B : 第三阶段:基于具体需要和个人兴趣进阶
B: 如果只是要满足基本使用或大多数工作中的需求,那么完成第二阶段基本就足够了(除非你是专门研究算法的)。
-
花8000多元买的商品,白等两个月却没收到货?亚马逊回应“花8000多元买的商品,白等了两个月却没收到货。”近日,消费者赵先生向《中国消费者报》投诉,称他通过亚马逊购物APP下了两笔订单,在等待两个月后订单均被强制取消。
-
广东省消委会发布二手车买卖合同示范文本为配合广东省推进“阳光二手车”工作,促进二手车流通行业健康发展,推动经营主体树立诚信经营理念,规范二手车交易行为,切实保护消费者的合法权益。
-
国家卫健委:家庭医生签约服务“最后一公里”有望打通3月15日,国家卫生健康委、财政部等六部门共同提出的《关于推进家庭医生签约服务高质量发展的指导意见》(以下简称《意见》)发布。
-
2022年1~2月房企拿地榜出炉:冠军碧桂园近日,中指研究院公布了2022年1~2月房企拿地(金额)TOP100榜单。令业内惊讶的是,除了品牌房企名次“乾坤大挪移”,榜单内还冒出了许多“名不见经传”的新面孔。
-
科技助农种好粮(新春走基层)春节期间,苍洱之间暖阳高照。云南大理市喜洲镇仁里邑村,种了一辈子地的杨双全发现自己成了“门外汉”。“我现在
X 关闭
X 关闭