紙上談兵: 算法與數據結構


算法和數據結構是計算機科學的核心內容。作為程序員,編程是我們的實戰項目。然而,寫出程序還不夠。一個程序在應對一些大型而復雜的情況時,會耗費大量的時間。我們可以很容易寫出一個從文件中找到一個詞的程序,比如逐詞掃描,看是否相符。但如果我們的文件有幾十TB,而且要從文件中找到上百個詞,逐個掃描的辦法就幾乎不可行。我們需要優化程序,以便我們的程序可以應對復雜問題。算法研究解決問題的方法,而數據結構則是設計一種更好的組織數據和使用數據的方式。兩者有很強的相互依賴關系,所以往往放在一起討論。

 

我將這一系列文章標題為“紙上談兵”。歷史上,紙上談兵的是趙括。他是趙國名將趙奢的兒子。趙括自幼熟讀兵書,但沒怎么上過戰場。他取代廉頗指揮趙軍,與秦軍對峙。由於他急於出擊,導致趙軍陷入圈套,兵敗長平。四十萬趙國士兵被坑殺,趙國一蹶不振。

 

就好像兵書一樣,“算法和數據結構”的核心是處理計算機問題的一些基本原則經典案例。與介紹語言的語法書不同,“算法和數據結構”不能包治百病。很多時候,程序員需要修改已有算法,或者創造算法,才能解決問題。讀過兵書之后,還要會活用,才算真正懂得了算法。我還是處於紙上談兵的階段,所以以“紙上談兵”為標題以自勉。在這個系列中,我將簡述一些經典算法和數據結構的基本思想,並分享我自己寫的相關實現代碼。這些代碼純粹是為了加深自己的理解寫的,你完全可以忽略我寫的代碼,而自行實現。動手練習,是學習編程的最好途徑了。

希望對大家有用。

 

數學歸納法, 遞歸, 棧

 

排序算法

 

表 (list)

 

棧 (stack)

 

隊列 (queue)

 

樹, 二叉樹, 二叉搜索樹

    AVL樹

    伸展樹 (splay tree)

 

堆 (heap)

    左傾堆 (leftist heap)

 

哈希表 (hash table) 

 

圖 (graph)

    拓撲排序 (topological sort)

    最短路徑(shortest path)與貪婪

 

 

RSA加密與破解

 

未完待續...

 

===================

下面是參考書籍:

豆列

http://book.douban.com/doulist/1938922/#sb1237002

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM