在極客時間上訂閱王爭老師的《數據結構與算法之美》有一段時間了,不僅讓我學習了以前沒有接觸過的算法和數據結構,更重要的是讓我懂得了如何學習數據結構和算法。數據結構與算法應該說是計算基礎中的基礎,在學習算法之前最好對計算機的原理有一定的了解,不然很難理解數組和鏈表的實現,所以大學計算機專業都會有算法課,一般都會在大二、大三(大一一般學習C語言、計算機組成原理)。
復雜度是一個算法的重要指標:時間復雜度、空間復雜度。我們希望“多快好省”實現某個功能,即希望執行時間快,又希望占用內存少,然而魚與熊掌不可得兼,某些情況下就會“空間換時間”、”時間換空間“。復雜度分析是比較難的,通過公式進行推導,這要求有良好的數學基礎。
為什么要學習算法?
1.算法是計算機的基礎,基礎不牢走不遠。
2.大廠面試,算法必問。
3.幫助自己編寫高性能的代碼。
4.算法,是一種解決問題的思路和方法,有機會應用到生活和事業的其他方面。
5.長期來看,大腦思考能力是個人最重要的核心競爭力,而算法是為數不多的能夠有效訓練大腦思考能力的途徑之一。
算法易學,應用最難。好比解數學題,公式易懂,但不一定能解出題目來,一道數學題可能用到多個知識點,同樣的一個問題可能也需要用到多種算法,而且還沒有標准答案。怎么辦?只有多學多練,熟能生巧。
總之,數據結構與算法是前輩們智慧的結晶,學習數據結構與算法才是軟件編程的捷徑。