本來打算貼上極客時間的目錄,結果發現太長了。影響到閱讀,何況我並不是為了宣傳極客時間的專欄。
作為一名軟體工程師,為什麼要學習資料結構和演算法?
看到這個標題,我打算先不看文章,先自己反思一下。自己寫程式多年,發現在做很多專案的時候被演算法限制了自己的發揮,很多實現明明知道應該有更好的辦法,但是就是無法寫成**。還有很多時候,看別人的原始碼也會一知半解,甚至要加上斷點除錯才知道整個實現邏輯。所以,演算法在前期可能看上去沒那麼重要,因為有太多的框架,太多的基礎設施提供,而去實現一些中小型的系統,因為負載量一般都不高,很多無需考慮效能問題,就算效能有點問題,一般也會粗暴的增加硬體配置去解決,畢竟現在雲伺服器、硬體成本越來越低。剛出道的時候,遇到過很多不堪入目的**,也見過很多有3年左右開發經驗的同學同事繞了一大圈寫了一堆莫名其妙的的邏輯去解決某個簡單問題,一般都是只要實現了業務需求即可,至於效能。呵呵!這種情況出現在asp.net比較多。我的第一家公司是深圳一家外包公司,進去沒多久,我們老大就看不下去我們寫的各種巢狀if,過去這麼多年了,還是印象深刻,他教我們反向思維,在if裡面提前return**,這樣就不用乙個個的if巢狀下去了,達不到某個條件就直接return了,不用再寫個else。
接下來看看專欄作者,谷歌工程師的解釋。
通關大廠面試,這個對於我這種草根來說,進入大廠感覺是乙個遙不可及的夢,哦,不對,做夢也沒有想過這個事。
業務工程師從crud boy崗位高階。基礎框架中糅合了很多基礎資料結構和演算法的設計思想,掌握資料結構和演算法對於閱讀框架原始碼,理解其背後的設計思想,有非常大的幫助。
基礎架構研發工程師寫出達到開源水平的框架。這個還是崗位與技術的高階。對於自己來說,各種各樣的原始碼拿來即用,很少去考慮過他們是怎麼實現的,我是為了解決問題而解決問題,只考慮當下,以後遇到了又得查資料,這樣毫無積累,技術沒有任何長進。
對程式設計還有追求,不想被行業淘汰。確實現在競爭越來越激烈了,感覺現在遍地都是程式設計師了,這是乙個最好的時代,也是乙個最壞的時代。30歲越來越近,不知道何去何從。
最後掌握了資料結構和演算法,你看待問題的深度,解決問題的角度就會完全不一樣。好吧,我拭目以待。
如何抓住重點,系統高效得學習資料結構和演算法。
這正是我學習你這個專欄的原因。
資料結構指一組資料的儲存結構,演算法是運算元據的方法。資料庫類似於圖書館,存的資料類似於書本,書本分門別類並按照一定規律編號,分類與編號就是書籍這種資料的儲存結構。我們去查詢某一本書的方法就是演算法。這個專欄主要講一些著名的資料結構和演算法,比如佇列、堆、棧、二分查詢、動態規劃等。
資料結構和演算法的關係。資料結構和演算法是相輔相成的。資料結構是為演算法服務的,演算法要作用再特定的資料結構之上。就像你要去統計人數,如果人站得亂七八糟的東乙個西乙個,而且沒事還要走動一下,你就很難統計出準確的人數出來,如果讓人按照10人一隊站整齊,,就可以快速準確的統計出人數來。
學習重點,先掌握最重要概念:複雜度分析。資料結構和演算法解決的是如何更省、更快地儲存和處理資料的問題,因此,我們需要乙個考量效率和資源消耗的方法,這就是複雜度分析方法。20個最常用的、最基礎資料結構與演算法:
10個資料結構:陣列、鍊錶、棧、佇列、雜湊表、二叉樹、堆、跳表、圖、tried樹;
10個演算法:遞迴、排序、二分查詢、搜尋、雜湊演算法、貪心演算法、分治演算法、回溯演算法、動態規劃、字串匹配演算法。
一些事半功倍的學習技巧
邊學邊練,適當刷題。 力扣,也有中文版。左耳朵耗子推薦的演算法練習**。
多問、多思考、多互動。剛好有個朋友做大資料的,演算法這塊可以多找他請教~~
打怪公升級學習法,給自己設定切實可行的目標。
知識需要沉澱,不要試圖一下子掌握所有。需要多複習。
資料結構與演算法之美學習心得3
為什麼需要複雜度分析 事後統計法 把 跑一遍,通過統計 監控來得到演算法執行的時間和占用的記憶體大小。缺點 1.測試結果非常依賴測試環境 測試環境中的硬體不同會導致測試結果也不同。2.測試結果受資料規模的影響很大 資料規模太大,測試 需要花費的時間就太多了 資料規模太小,反映不出演算法的真實性能 對...
資料結構學習心得系列(三)
本博文意在鞏固基礎知識,高手請繞過。部分 和內容參考嚴蔚敏人民郵電版出版社 資料結構 樹和二叉樹 樹樹 tree 是n n 0 個結點的有限集 t,在任意一棵非空樹中 有且僅有乙個特定的結點,稱為樹的根 root 當n 1 時,其餘結點可分為 m m 0 個互不相交的有限集 t1,t2,tm,其中每...
《資料結構與演算法之美》學習筆記 3 資料結構
陣列定義 陣列 array 是一種線性表資料結構。它用一組連續的記憶體空間,來儲存一組具有相同型別的資料。第一是線性表 linear list 顧名思義,線性表就是資料排成像一條線一樣的結構。每個線性表上的資料最多只有前和後兩個方向。除了陣列,鍊錶 佇列 棧等也是線性表結構。而與它相對立的概念是非線...