iT邦幫忙

2025 iThome 鐵人賽

DAY 1
0

我遇過很多學習程式語言的人,都一直學框架或是 API 怎麼用,都不是很注重底層的知識,我認為一棟樓要蓋多高取決於地基打得多深,因為框架與 API 會變,但時間複雜度、記憶體模型、資料結構設計是不會變的。

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

資料結構與演算法是程式設計的基礎,它們除了能幫助你寫出更有效率的程式,也是很多公司技術面試中必考的內容。其實我個人認為這也是本科與分本科的分水嶺,熟練的掌握這部分,能夠讓你跟那些轉職的工程師拉開距離,脫穎而出。

系列規劃說明

本系列將會依照以下方向進行介紹:

  • 資料結構 (Data structure)
    • 陣列 (Array)
    • 鏈表 (Linked list)
    • 堆疊 (Stack)
    • 佇列 (Queue)
    • 樹 (Trees)
    • 圖 (Graphs)
  • 演算法 (Algorithms)
    • 演算法分析 (Algorithm analysis)
    • 圖演算法 (Graph algorithms)
    • 貪婪演算法 (Greedy algorithms)
    • 分治法 (Divide and conquer)
    • 動態規劃 (Dynamic programming)
    • 網路流 (Network flow)
    • 超越多項式運行時間的演算法 (Beyond polynomial running time)
    • 線性規劃 (Linear programming)

本系列的重心會放在演算法的部分,如果有剩餘的篇幅會補充排序或是搜尋的演算法;我會盡量會在每個知識點找個 1 ~ 2 題的 Leetcode 來實作。

技術範圍與預期對象

本系列會以 Python 為範例,但是其實你也不一定需要會 Python,理論上只要有理解,就應該要能夠使用你自己熟悉的語言寫出來,所以本系列只預設讀者至少具備一門程式語言 (Python, Java, C++, JavaScript ...) 的基礎即可。

本系列的學習方式

本系列每天會講一個知識點,未必是一天一個資料結構或演算法,吸取了我另一篇30 天入門常見的機器學習演算法已經完賽的經驗,這樣每篇的篇幅可能會落差很大,而且我的壓力會太大。基本上每篇一定會有理論,但是有沒有實作不敢保證,因為我認為學程式,不急著埋頭苦幹的寫,而是完全理解在動手。

結語

今天是第一天,請先準備好你熟悉的程式語言的開發環境,也可以順便註冊好 Leetcode,本系列文章會同步發表到我的部落格 - 志謙's Blog,如果有想詢問或交流,可以透過 Email、我的部落格或是對應的文章留言都可以,我看到就會回覆。


下一篇
(Day 2) 陣列 (Array)
系列文
快速掌握資料結構與演算法3
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言