如何面對“算法”的困惑?
收到一封面對“算法”問題困惑的來信:
我是網(wǎng)絡(luò)專業(yè)自然不回接觸軟件方向 ,但是 我對JAVA 感興趣 , 我想做開發(fā),開發(fā)當(dāng)中用到的好像和算法(和那些數(shù)學(xué)相關(guān)的) 沒有什么直接關(guān)系,都被包裝好了...
我還需要 去學(xué)習(xí)一下 <算法導(dǎo)論>"這些嗎?
回信如下:
1、很多都封裝好了?。∵€需要學(xué)習(xí)算法嗎?
回答:是啊,如果開發(fā)一些簡單的程序當(dāng)然可以用包裝好了的方法,但是,并不是所有你想干的事情都被人家包裝好了啊。如果你只做面向數(shù)據(jù)庫的“增刪改查”,基本就不用研究算法了。
2、那“算法”這東西到底是什么?
回答:如果你自己做一個(gè)類似數(shù)據(jù)庫的程序怎么辦?有人會說,人家都做好了現(xiàn)成的MySQL、SQL-Server、Oracle等等數(shù)據(jù)庫程序,我們直接使用就行了,還做它干什么?
我說:為什么我們就不能自己做一個(gè)數(shù)據(jù)庫?
好,要不你自己做一個(gè)WebServer如何?
算了,這些都難,那你做一個(gè)簡單的數(shù)組中的數(shù)據(jù)比對程序,***形成一個(gè)新數(shù)組如何?
你只知道,調(diào)用JDBC怎么完成這個(gè)開發(fā)任務(wù)?
我給一個(gè)定義:
算法其實(shí)就是用最簡潔最快的方法,“折騰”數(shù)組或者其他數(shù)據(jù),你的“算法”能力決定著你程序的運(yùn)行效率。
所謂的“折騰”就是各種針對數(shù)組或者其他數(shù)據(jù)的運(yùn)算過程,這個(gè)過程根據(jù)你的需要完成。
3、“算法”可怕嗎?
回答:很多同學(xué)一聽“算法”立馬腿軟,其實(shí)有那么可怕嗎?一點(diǎn)不可怕,軟件開發(fā)是門技術(shù),但同時(shí)又是一門藝術(shù),多練練就不怕了。
4、切莫為了“算法”而“算法”
很多同學(xué)為了練習(xí)“算法”,而特意去找一些“算法”的東西去練,練到***,還是云里霧里,到底什么時(shí)候用到“算法”呢?還是很暈,這就是“算法”和實(shí)際應(yīng)用脫節(jié)的結(jié)果。
記住:任何程序都是有意義的,沒有無意義的程序,不要為了“算法”而去“算法”,任何“算法”都是和實(shí)際應(yīng)用相結(jié)合的。
5、回去試著做一道題:
試著做一個(gè)方法,傳入兩個(gè)數(shù)組和一條SQL語句,返回一個(gè)數(shù)組。
這個(gè)返回的數(shù)組時(shí)你SQL語句指定的返回條件返回的結(jié)果。
試試看,你能做出來這個(gè)程序,你的算法應(yīng)該就沒什么問題了。
注意:這個(gè)程序很實(shí)用,甚至可以理解為一個(gè)小型數(shù)據(jù)庫的雛形程序呦!
【編輯推薦】






















