數據結構與算法在計算機領域或行業之中到底佔據著怎樣的重要地位?

海之怒行


算法是程序的靈魂,架構是靈魂的軀體,最近對這兩句話感觸很深,但很多程序員甚至忽略算法存在,更不要說是架構層面的東西,有些程序員甚至有些疑問,做編程也有幾年了碰到關於算法的東西實在是很少,平時用到的算法主要存在兩個方面的原因:一種是裡面涉及的編程裡面可以用更好的算法來代替但是本身由於意識層面的問題,感覺不到可以採用更加優秀的算法,時間久了忽略了算法的真實存在;第二種本身工作上觸及到的算法比較少,感受不到算法的重要性。

數據結構和算法在實際編程中作用

算法一般用在圖形換算或者提升換算效率的地方。就拿一個普通的系統,一般真正使用算法的地方相對比較有限,但真要遇上如果沒有點算法基礎也是搞不定,正常來講一個項目組內有一個算法比較不錯的人就足夠正常的運轉,如果沒有現學現賣基本上搞不定,簡單的算法除外。在真實的編程環境中成品的算法未必直接拿過來就好用,很多時候需要自己來實現,最差也需要定製算法,不要存在僥倖的心理,真正需要玩算法沒有基礎會相當痛苦。

數據結構不僅僅是算法基礎還是程序設計的綱領。在學習算法之前首先要掌握數據結構,因為數據結構裡面很多基礎,像隊列,棧,鏈表,二叉樹這些都是算法基礎,因為再複雜的算法也是基礎的東西組合起來的,複雜的算法涉及到數學知識了,所以專業的算法工程師需要具備良好的數學底子。但數據結構更多是用在功能模塊裡面編程模型的設計上,有些程序員在設計模塊功能的時候,首先會設計頭文件,因為頭文件包括結構體,變量以及宏定義都是在頭文件中設計完成,一個模塊的基本功能在頭文件出來之後什麼事情都會變得順理成章,數據結構裡面的一些基本元素像鏈表都是在設計基本模塊功能所必需。

有經驗的程序員很少直接寫代碼,都是在構思設計思路,然後查閱各種資料,最後寫代碼的時間只佔很小一部分,大部分時間都是在設計模塊的數據結構,就是結構體裡面變量傳遞的來龍去脈,所以講數據結構是程序員必備常識,至於算法如果追求極致點必須要專業來學,普通的算法可以作為程序員也是必備的。

如何學習算法

學習算法需要具備一定的基礎,專業類的算法必須要有數學基礎,或者下足夠的功夫才能達到,正常的程序員要掌握一般的算法以及數據結構知識。學習算法需要有個長期規劃,不要指望著很短的時間內就把算法搞定,如果有機會最好在大學期間開始學習算法。

先從基本的數據結構學習起來,掌握基本的數據模型,然後開始學習基本的算法模型,慢慢深入進去學習,算法的學習沒有什麼捷徑關鍵在於理解的基礎上進行實踐,效果會非常好,不要上來就買本算法導論在使勁研究,結果看了沒有多長時間就把自己看暈了慢慢就放棄了。

整體來講算法在計算機領域佔據非常關鍵的地位,在有些部位算法不靈會影響整個系統,也是優秀程序員必備基礎,如果有機會學習還是不要放過,希望能幫到你。


分享到:


相關文章: