上了大学开始学习算法,曾有这么一个疑问:学习算法能干什么?我相信许多人在开始学习算法时都有这样的疑惑。记得在论坛上有一位博友说过这样经典的一句话:学习算法就像习武之人练内功一样,内功越是深厚,你的武功才能更加牛X。只有有了深厚的内功,才能够成为真正的武林高手。我对此是相当赞同的。就拿小学五年级时老师给我们说的高斯的例子来说吧,要求:求1+2+3+...+99+100之和。记得当时这道题刚给我们的时候,我们的第一反应就是从1一直加到100,老师让我们再好好想,想了半天,还是没有好的办法。于是乎老师就告给我们著名的高斯同志是怎样解的,当我们听到高斯的解法之后,当时就感觉这个解法真好,当然想出这个解法的高斯同志就更厉害了。直到现在我也是这样认为的。看似简单其实不然,我想当时我们学的数学在某种程度上就是现在的算法吧!
刚开始学习算法时,就抱着一本《算法导论》。本来打算的是得好好学一下,吸收一下里面的精髓,而且自己本来就挺爱学数学。但是当开始学习这本圣书之后,我可是有些打退堂鼓了。前几章还行,凑合着还能看懂,自己还能敲一敲,到后面那就直接不行了,几乎就看不懂了,完全是云里雾里的感觉。于是,赶紧调转枪头,开始在论坛上寻找各位博友的有关算法学习的文章。自从开始学习大家的文章之后,就有一种雨后见彩虹的解脱感觉,拜托了书上的那些个弯弯绕,直接从《算法导论》的摧残中逃了出来,那真是受益匪浅。从排序算法到搜索算法,再到后来的各种算法着实让我学到了很多东西,不仅充实了知识,更重要的是在不断地思考与学习的过程中锻炼了我的逻辑思维能力,这是我认为很重要的。让我逐渐的回到高中时那种时时在思考的状态,还是脑子动起来好啊!(当我们上了大学,那生活是相当的安逸,脑子也不动转了,人也变得迟钝了)。
学习算法也有一段时间了,本来想整理一下和大家分享来着,可毕竟有很多东西还是不懂,想和大家多多交流一下。我也不是没有时间写这些,主要还是因为太懒了,不想动弹(上了大学人就有了一种惰性)。上论坛,上了之后就想先看看众家兄弟的好文章,一看这就收不住了,老想着吸收一下这些好的想法。特别是一些很牛X的算法,那是值得我去细细品味的。我曾经也想过为什么那些牛人能想出这样的算法来,而我们就不行呢?难道是我们的脑子不够用,还是他们脑子太好使了。我想答案还是爱迪生同志的那句话:天才那就是%99的汗水加上%1的灵感。其实他们也是通过不停的思考、思考、在思考才得出那些让后人传颂的算法的,那才叫水到渠成!试想想:让你一天吃完了饭啥都不干,就捉摸这些东西,我相信只要你耐心好,过一段时间之后你也会得出某些值得我们学习的东西来的。所以说,学习算法那可不是一朝一夕就能学好的,我们要抱着“铁棒磨成针”的心态学习算法。
当然,我认为要想学好算法拥有一个强大的数学功底那真是必不可少的。数学知识对算法的重要性那是不言而喻的。举个例子吧:现有一个正整数S,有n个正整数满足:S=a1+a2+a3+...+an,使得a1*a2*a3*...*an最大。此时,你会怎样有效地解决这个问题呢?这是值得大家思考一下的。不管是初中、高中、大学的数学知识都对学习算法有很大的帮助,本人是深有感受啊!比如“黄金分割”,“相交弦定理”等等都有很大的用处。
上面这乌七八糟写了一通就算是我对算法的浅薄认识吧!算法的深奥岂是我等一时半会能领悟的了得,本人的目的就是想多和大家交流交流,多向大家学习学习,更好的进步么。还是那句老话说的好啊:不想当将军的士兵不是个好士兵!
让我们算法见!