编程-学习-思考

从此不再害怕算法

从此不再害怕算法

说实话不害怕算法那肯定是不可能的,从写第一行代码开始就深深的被算法和数据结构所缠绕着,像一座大山,无法翻越只能仰望。那么,从今天开始就尝试去攀登这座高山,看看上面到底有什么风景。

为什么害怕算法

当然这是从我自己的角度去理解的,对一件事物的害怕或恐惧大多都来自于对它的无知和不了解,或者来自于周围环境和人的影响。对于算法似乎也不例外,当听到或者看到算法这两个字的时候,映入脑海的不是那种复杂的代码,就是一堆推导公式,真的是像一个幽灵想去认识它,又害怕自己能力不够,即使有时候真正鼓起勇气想去冲破这道魔障,却总是半途而废。每一次的从入门到精通,都成了从入门到放弃,如此周而复始没有什么进步,只会徒然怎么恐惧感。

重新认识算法

克服对算法的恐惧感从重新认识它开始。大家都知道程序=算法+数据结构,不过通常我们学习的时候程序都非常简单,然后就是程序=代码的印象。总是看不出哪里有数据结构和算法的味道。不过让我们再一次重新回顾一下算法和数据结构的定义。算法就是完成一个目标的步骤和方法,而数据结构就是程序数据的组织形式,这种组织形式不是物理意义上的而是抽象的。那么程序就是用为了完成一件事或者实现某种功能而设计相应的算法和数据结构,然后用编程语言来实现。

根据算法的定义,这并不是我们程序员所独有的,只不过我们是用程序语言来描述罢了。有时候我们恐惧和害怕的可能并不是算法本身,而是其实现形式。因此,学习算法就是学习和思考其中的思想和过程,并不是去记住实现它的程序。正所谓认知到了问题所在,却没有找到正确的解决办法。

如何学习算法

学习算法就是不要有先入为主的概念,因为算法本身就是一种思考问题、解决问题的方式,我们首先就是要把大脑清空,从简单入手,一步一步慢慢的向上爬。根据自己的实际情况,把算法融入到自己的工作和学习中去,下面推荐一些方法供大家参考。

  1. 边学边练。学习就是一个输入的过程,而练习是一个输出的过程。如果可以形成一个闭环反馈系统那就更好的了。当你学习一个算法的时候,然后用代码去实现你想要的功能,每次都给自己的学习成果打打分,这样就可以知道自己的进度和掌握的程度。
  2. 重要的是思想和思考过程而不是代码。有时候如果你不想写代码也可以,使用自己的伪代码或者是自然语言去描述自己的实现,然后和其他的人进行对比。分析你们的不同之处,然后进行讨论,或许还要意想不到的收获。
  3. 学习本身就是一个长期的过程,更何况是算法,永远都没有终点只有里程碑。因此,目光放长远一点,不要因为一时不懂就放弃,尝试休息几天或者看看跟简单容易的题目,说不定哪一天那个问题就不是问题了呢。

我的目标很简单,不再对算法产生恐惧感,要让它成为我的工具,在写代码的时候能灵活运用也就心满意足了。