
如果你成為一名程序員,你可能想學(xué)習(xí)算法和數(shù)據(jù)結(jié)構(gòu),特別是你沒(méi)有在學(xué)校學(xué)過(guò)這門(mén)課程。
但是,你在寫(xiě)應(yīng)用程序的時(shí)候,什么時(shí)候自己寫(xiě)過(guò)鏈表?什么時(shí)候自己寫(xiě)過(guò)排序?答案是:幾乎從不。
然而...
了解一些通過(guò)算法來(lái)解決棘手問(wèn)題的策略,一點(diǎn)點(diǎn)的改善你的想法和代碼。
知道更多的數(shù)據(jù)結(jié)構(gòu),而不僅僅是標(biāo)準(zhǔn)的數(shù)組和字典,你會(huì)得到一個(gè)更大的工具箱,你可以用來(lái)構(gòu)建自己的應(yīng)用程序。
它會(huì)讓你成為一個(gè)更好的開(kāi)發(fā)者! (和掙更多的錢(qián)?。?/p>
算法可以讓你辦你辦不了的事。
有一些應(yīng)用程序我寫(xiě)不出來(lái),是因?yàn)橐恍└締?wèn)題我無(wú)法解決。
通常是速度上的問(wèn)題:我的程序不夠快。 現(xiàn)在回想一下,遇到這些問(wèn)題是因?yàn)檫x擇了錯(cuò)誤的算法。 如果我早知道更多關(guān)于O(n)和O(n ^ 2)之間的差別,那么也許我就搞定了。
暴力解決方案適用于少量數(shù)據(jù),但有時(shí)你需要處理大量數(shù)據(jù)。 然后你需要更聰明的算法。
有時(shí)候并不是速度問(wèn)題,而是我根本不知道如何下手。 理解一點(diǎn)算法理論,你可以嘗試更多種方法。
算法不像聽(tīng)起來(lái)那么可怕。
很多算法教科書(shū)從一大堆數(shù)學(xué)開(kāi)始。 說(shuō)真的,數(shù)學(xué)是有用的,但大多數(shù)時(shí)候你不會(huì)需要它。 所以不要讓數(shù)學(xué)嚇到你。 如果你會(huì)編寫(xiě)代碼,你也可以理解所有這些奇特的算法和數(shù)據(jù)結(jié)構(gòu)。
相信我,算法很有趣。 :-)
英文鏈接:
https://github.com/raywenderlich/swift-algorithm-club/blob/master/Why%20Algorithms.markdown