到底该怎么学习算法-当前讯息
发布时间:2023-05-04 19:01:42 来源:哔哩哔哩

A: 我到底该怎么学习算法呀?


(资料图片)

B: 回答这个问题前,我们先来举个例子:如何实现“把大象装进冰箱”?

A:   三步。第一步,把冰箱门打开,第二步,把大象装进去,第三步,把冰箱门带上。

B:  在这个程序中,大象、冰箱,是数据,而“如何把大象装进冰箱”,就是这个程序的算法。

B:   算法一:把大象放在冰箱前,把冰箱门打开,把大象装进去。算法二:把冰箱门打开,把大象放在冰箱门前,然后把大象装进去。算法三:把大象放在冰箱前,把冰箱门打开对准大象,然后把冰箱向着大象推动直至把大象装进去。

B:   实现一种需求,可以设计出多种算法,并且,算法在很大程度上决定了你写出的程序漂不漂亮、巧不巧妙,所以我们学习算法的目的是为了在写程序时能够设计出更优化的方案。

B:  对于初学者来说,可以分成三个阶段进行算法的学习,循序渐进,逐步深入。

A:  快给我讲讲

B : 第一阶段:基于语言去学习数据结构,继续举大象的例子。一个把十头大象装进冰箱的程序,首先要解决的问题是:如何存放这十头大象。你可以把这十头大象用绳子挨个串起来,这样即使大象会乱跑,但只要你一直抓着绳子头,就可以顺藤摸瓜,把十头大象都找到;或者,你可以制作十个紧挨着的格子,然后把每头大象依次放到格子中,这样大象就不会乱跑。在这里我们可以看到,同样是存放十头大象,我们设计出了两种不同的方式,这两种对大象(数据)的存放方式,就是“数据结构”。

B:  每种语言都有一些数据结构,因此可以通过自己熟悉的语言先对数据结构进行了解。

A:  那第二个阶段是什么呢?

B:   第二阶段:基于数据结构去学习基本的算法。

B:   在对数据结构有了一定了解的基础上,就可以对常用的算法进行学习了。比如最基本的各种不同的排序方法:冒泡排序法、选择排序法等等。在此期间,可以加强对“时间复杂度”这一概念的了解,同时开始学习一些更高级的数据结构。

B:   在这个阶段,建议找个OJ(Online Judge) 尝试做题,遇到问题可以更有针对性的学习。

Online Judge会给你一个简单的问题,然后让你编程解决,系统会有很多测试样例。如果你的代码可以通过所有的测试样例,那么说明你的代码逻辑上是正确的。同时OJ都会有一定的内存使用与运行时间限制,过于低效或耗费大量非必要空间的算法将不会通过测试。

A: 那最后一个阶段是啥呢?

B : 第三阶段:基于具体需要和个人兴趣进阶

B: 如果只是要满足基本使用或大多数工作中的需求,那么完成第二阶段基本就足够了(除非你是专门研究算法的)。

标签: