1. 程式人生 > >一、如何學習資料結構與演算法

一、如何學習資料結構與演算法

什麼是資料結構?什麼是演算法?(是什麼)

資料結構是為演算法服務的,演算法要作用在特定的資料結構之上。 因此,我們無法孤立資料結構來講演算法,也無法孤立演算法來講資料結構; 舉例: 圖書館儲藏書籍你肯定見過吧?為了方便查詢,圖書管理員一般會將書籍分門別類進行“儲存”。按照一定規律編號,就是書籍這種“資料”的儲存結構。 那我們如何來查詢一本書呢?有很多種辦法,你當然可以一本一本地找,也可以先根據書籍類別的編號,是人文,還是科學、計算機,來定位書架,然後再依次查詢。籠統地說,這些查詢方法都是演算法。

學習重點(學什麼)

想要學習資料結構與演算法,最重要的概念是—複雜度分析,必須熟練拿下,否則資料結構與演算法等於沒學; 學習圖譜: 在這裡插入圖片描述

以上內容比較多,為此我們需要精簡學習,這樣才會事半功倍;總結了20個常用的、基礎的資料結構與演算法,不管是面試還是工作,只要掌握這20個點,就完全足夠了,如下: 10種資料結構:陣列、連結串列、棧、佇列、散列表、二叉樹、堆、跳錶、圖、Tire樹 10個演算法:遞迴、排序、二分查詢、搜尋、雜湊演算法、貪心演算法、分治演算法、回溯演算法、動態規劃、字串匹配演算法

學習資料結構和演算法的過程,是非常好的思維訓練的過程,所以,千萬不要被動地記憶,要多辯證地思考,多問為什麼。如果你一直這麼堅持做,你會發現,等你學完之後,寫程式碼的時候就會不由自主地考慮到很多效能方面的事情,時間複雜度、空間複雜度非常高的垃圾程式碼出現的次數就會越來越少。你的程式設計內功就真正得到了修煉。

學習技巧(怎麼學)

1.邊學邊練,適度刷題 掌握 -> 應用

2.多問、多思考、多互動 多與學習者交流

3.堅持,不要因為枯燥而放棄

4.知識需要沉澱,細嚼慢嚥 不要一下子想掌握所有,不可能,需要沉澱

flag(制定目標)

通過學習資料結構與演算法,需要掌握以下:

  1. 熟練掌握複雜度分析
  2. 常見資料結構與演算法的理解與優化
  3. 掌握10種資料結構與10個演算法,可以從容應對一些面試題與工作
  4. 每種演算法必須實現一遍,以專案方式整理到github上
  5. 工作中能寫出優秀的程式碼,減少垃圾程式碼的輸出