1. 程式人生 > >資料結構與演算法學習背景概述

資料結構與演算法學習背景概述

為什麼要學習資料結構與演算法?

1. 面試必備 站在一個比較現實且功利的角度來看,做計算機技術的大公司,如BAT、Google、Facebook,它們在招聘技術人員時,資料結構與演算法是必考查的知識點。如果想要進入這樣的大公司,那麼掌握資料結構與演算法就是必不可少的。 這點作為正在秋招時期的我深有感觸。完全不問資料結構與演算法的技術面試是非常少的,基本上每個公司在技術面都會考查資料結構與演算法(就算是小公司)。 2. 技術路線成長必備 如果自己想在技術路線上有所成長,那麼資料結構與演算法就是必備的。因為資料結構與演算法會幫助自己的開發過程中考慮的更成熟。雖然作為學生的我目前還沒有體會到資料結構與演算法在實際專案中的功效。不過,就我目前的知識來看,如果想要自己的程式碼要很好的儲存與計算效能,那麼是不是就一定要考慮資料的儲存方式與資料的操作方式?這就是資料結構與演算法了,想要自己考慮的更周全更深入,那麼一定要考慮到資料的儲存與操作。學習資料結構與演算法其實就是學習前人大牛們總結出來的經驗。如果掌握了這些,我們就是站在巨人的肩膀上看問題了,當然會事半功倍了。

學習資料結構與演算法的原動力

我認為學習資料結構與演算法的原動力應該是為了自己的技術成長,而面試通關利器只能作為結果而非動力。

資料結構與演算法是什麼

廣義上:資料結構是儲存資料的方法,演算法是操作資料的方法。舉個例子,在圖書館中,資料就是一本本書。圖書館的資料結構就是書存放在圖書館的方式,比如它可以隨機放,也可以分門別類的存放。圖書館的查詢演算法就是我們查詢一本書的方式,我們可以一個接著一個的去試探性的查詢,也可以按類定位查詢。 狹義上:資料結構指的是隊、棧、堆、陣列等,演算法指的是動態規劃、二分查詢等。這些資料結構與演算法都是計算機領域的前輩們總結出來的經驗,我們掌握了這些,在自己實際工作中就可以借鑑使用。或者掌握這些資料結構與演算法的思想也能夠幫助自身更好的思考問題。

資料結構與演算法的重點是什麼

核心重點:複雜度分析 資料結構:陣列、連結串列、棧、佇列、散列表、二叉樹、堆、跳錶、圖、Trie樹 演算法:遞迴、排序、二分查詢、搜尋、雜湊演算法、貪心演算法、分治演算法、回溯演算法、動態規劃、字串匹配演算法。

資料結構與演算法全貌

在這裡插入圖片描述 (圖來自王爭《資料結構與演算法之美》課程)