【算法-數據結構 大系】算法與數據結構

算法和數據結構是計算機科學的核心內 容。作爲程序員,編程是我們的實戰項目。然而,寫出程序還不夠。一個程序在應對一些大型而複雜的情況時,會耗費大量的時間。我們可以很容易寫出一個從文件 中找到一個詞的程序,比如逐詞掃描,看是否相符。但如果我們的文件有幾十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