數據結構和算法(What Why How)

數據結構和算法是什麼?

從廣義上講,數據結構就是指一組數據的存儲結構。算法就是操做數據的一組方法。面試

從狹義上講,是指某些著名的數據結構和算法,好比隊列、堆、棧、二分查找、動態規劃等。算法

數據結構和算法有什麼關係?

數據結構和算法是相輔相成的。數據結構是爲算法服務的,算法要做用在特定的數據結構之上。所以,咱們沒法孤立數據結構來說算法,也沒法孤立算法來說數據結構。數組

爲何要學數據結構和算法?

若是不學數據結構和算法:

  • 難以經過大公司的面試
  • 編寫的代碼運行效率低下,佔用存儲空間大
  • 寫出來的框架Bug多、性能通常、擴展性很差

學好了數據結構和算法:

  • 大大提高進入大公司的機會
  • 編寫的代碼運行「更快」和「更省存儲空間」
  • 寫出來的框架能夠開源到Github上給不少人用

怎麼學數據結構和算法?

學習的重點在哪裏?

首先,要掌握數據結構與算法最重要的概念——複雜度分析。微信

20個最經常使用的、最基礎數據結構與算法

10個數據結構:數組、鏈表、棧、隊列、散列表、二叉樹、堆、跳錶、圖、Trie樹數據結構

10個算法:遞歸、排序、二分查找、搜索、哈希算法、貪心算法、分治算法、回溯算法、動態規劃、字符串匹配算法框架

學習的一些技巧

一、邊學邊練,適度刷題

每週花幾個個小時的時間,把上述20個經常使用的數據結構和算法,所有本身寫出來,用代碼實現一遍,同時能夠去leetcode或lintcode刷刷題。數據結構和算法

二、多問、多思考、多互動

寫好一段代碼之後,要問一下本身:這樣寫合適嗎?有沒有更好的方法?若是用其餘方法寫,效果如何?性能

多找幾我的一塊兒學習,之前我都是本身學習,如今愈來愈意識到互動的重要性,此次加入了一個「一塊兒學數據結構和算法」的微信羣,你們互相監督學習,有了良好的學習氛圍,對學習幫助也更大。學習

三、經過輸出倒逼輸入

每節課後都寫下一篇筆記或學習心得,輸出文章自己也是一個學習的過程,經過寫文章,不只提高了寫做能力,也能倒逼本身學習更多知識。code

四、知識須要沉澱,不要試圖一會兒掌握全部

遇到學不懂的知識點,不要急躁,學習知識的過程就是反覆迭代、不斷沉澱的過程。

相關文章
相關標籤/搜索