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