很多人一聽到「資料結構」或「演算法」,腦中就會先浮現考試題、競賽題,或一大串看起來離生活很遠的符號。
但其實我們每天都在用演算法思維做事。像是排今天先做什麼、從一堆資料裡找重點、把重複資料清掉、安排誰來接任務,這些都和資料結構與演算法有關。
這本書不是要把你訓練成解題選手,而是想陪你建立一種更清楚的思考方式:
先把問題說清楚
再把條件整理好
最後選一個夠用、能解釋、能重現的方法來處理
這本書怎麼跟一般教材不一樣¶
這本書盡量不用太重的學院口吻,也不會一開始就把你丟進太抽象的定義裡。每一章都會先從一個一般人熟悉的情境開始,例如:
整理待辦和排順序
清理表格資料
找路、排程、比方案
看懂流程卡在哪裡
把工作分給合適的人
等你先知道問題在說什麼,再回頭看程式和演算法,就比較不容易覺得它們只是硬塞進來的術語。
本書維持的三個原則¶
可理解:先講人話,再講做法。
可執行:每章都有可以實際跑的範例。
可驗證:每章都有測試,讓結果不是只靠感覺判斷。
你可以怎麼使用這本書¶
你可以把它當成一本從頭讀的入門書,也可以把它當成工作中遇到某類問題時的查閱手冊。
如果你平常不寫程式,也沒關係。光是把每章的情境、輸入、輸出和限制看懂,就已經能幫你把很多事情想得更清楚。
如果你會寫 Python,那這本書也可以讓你把零散的技巧,整理成比較完整的問題解法。
章節導覽¶
這本書分為 12 個主題,你可以按順序讀,也可以挑感興趣的直接切入:
第一章:用演算法思維整理日常工作
第二章:資料格式與表格(CSV / Parquet / NumPy)
第三章:排序與搜尋(把「找不到」變成可解問題)
第四章:雜湊與去重(處理重複名單)
第五章:圖與路徑(最短路線與流轉)
第六章:排程與資源分配(撞期處理)
第七章:預算與組合(有限資源挑方案)
第八章:優先佇列與即時任務(插單管理)
第九章:滑動視窗與異常監控(看連續趨勢)
第十章:區間合併與容量規劃(零碎時段)
第十一章:依賴排序與流程編排(前後依賴)
第十二章:配對與指派(任務與人)
關於這個電子書專案¶
這份內容同時也是一個可持續更新的電子書網站。書稿、範例、測試和網站建置放在同一個專案裡,目的不是炫技,而是讓每一章都能一直保持可讀、可跑、也可修。
希望你讀完後,不只更懂資料結構和演算法,也更知道怎麼把它們用在自己的生活和工作裡。