為什麼要學習演算法和資料結構
經常有程式設計師詢問:“演算法有用麼?”,“我工作以來從來沒有用過任何演算法”,“硬體越來越快,不用演算法我的程式也能工作吧?”。”STL提供了那麼多演算法和資料結構,我能呼叫就可以了,不用管他們的實現了吧?“
本文給出兩個趣題,第一道題目展示演算法的威力,第二道題目展示資料結構的威力。
第一道題目是在一組ID中,找出最小的沒有被使用的ID,雖然暴力解法能找出答案,但是面對百萬級的ID數目,暴力解法實際上花費的時間使用者根本沒法忍受。通過這個題目,我們感性展示一下演算法的威力;
第二道題目是找出第1500個只含有2,3,5因子的數字,暴力解法看似能找到答案,但實際上花費的時間根本無法忍受。通過這個題目,我們感性展示一下資料結構的威力;
最後,本文還有一個觀點,那就是通常教科書中演算法和資料結構多為imperative的,很少有純functional的。而後者可以使得很多演算法和資料結構變得非常的簡單,直觀,容易理解。
原文地址:https://sites.google.com/site/algoxy/introduction
PDF:https://sites.google.com/site/algoxy/introduction/preface-en.pdf
原始碼:https://github.com/liuxinyu95/AlgoXY
內容由GNU FDL保護,原始碼由GNU GPLv3保護