每個程式設計師的力量都在於他的知識。是的,Google搜尋的能力也不是最後的,但無論如何,必須有一定的知識,在此基礎上形成開發人員的思維方式。這些知識越深入,程式設計師就能想出越有趣的解決方案。 這種「基礎」的組成部分之一就是資料結構和演算法。你怎麼能擴展你在這個方向上的知識呢?作為一種選擇,找一本書,其中的知識將成為進一步學習的防火儲備和基礎。對我來說,這樣的書就是Robert Laforet 的《Java 資料結構與演算法》。
為了誰
本書的讀者範圍可以是非常廣泛的,因為它無論對於剛剛掌握Java語言語法的人,還是對於正在練習的程式設計師,對於更深入地理解資料結構和演算法的特性都會很有用。 。關於什麼
本書致力於資料結構和演算法在程式設計中的學習和使用。它將教導讀者資料結構如何決定資料在記憶體中的組織方式,以及演算法如何對這些結構執行各種操作。讓我們更深入地挖掘一下,看看這本書到底講了什麼:- 數組。詳細介紹了數組和有序數組中的插入、搜尋和刪除操作。示範有序和無序數組的線性和二分搜尋操作。您還將了解什麼是 O 語法。
- 排序。考慮三種簡單的排序方法:「冒泡排序」、「選擇排序」、「插入排序」。從書中你將了解到哪一個是最慢的,哪一個是最簡單的。
- 堆疊和佇列。考慮了堆疊、佇列和優先權佇列等資料結構、它們的有效性以及 Java 中的實作。
- 連結列表。本書討論了雙向鍊錶和雙向清單、它們的效率以及如何執行插入、尋找和刪除操作。也涵蓋了迭代器及其所需的方法。
- 遞迴. 在各種情況下都會考慮遞歸,例如:計算三角數和階乘、建立字謎、執行遞歸二分搜尋、解決漢諾塔難題、實現合併排序、解決背包問題。
- 不平凡的排序。考慮更進階的方法:希爾排序、快速排序和基數排序,它們的演算法、效率。
- 二元樹。考慮平衡二元搜尋樹,它們如何運作,它們的插入和刪除操作,各種類型的遍歷,搜尋最小值和最大值,搜尋後繼。霍夫曼代碼也將被涵蓋。
- 紅色和黑色的樹。我們認為平衡樹是最有效的品種之一,它們的旋轉和顏色切換操作是平衡所必需的。
- 樹2-3-4。這種類型的樹被描述為多路徑樹的範例;討論了它們的操作以及與用於外部資料儲存的 B 樹的關係。
- 哈希表。涵蓋了散列及其各種方法,例如線性和二次探測、雙重散列和連結方法。您還可以了解如何使用雜湊來組織外部文件儲存。
- 金字塔。這是一種特殊類型的樹,用於有效地實作優先權佇列。本書討論了插入、刪除和重排的操作機制。您還將了解什麼是金字塔排列以及如何在 Java 中實現它。
- 圖表。介紹了加權和未加權圖、搜尋它們的演算法以及用於查找最短遍歷路徑的演算法。
什麼是創意工坊應用程式
Workshop應用程式用於演示這些結構和演算法。應用程式被設計為可以在瀏覽器中運行的 Java 小程式。Workshop應用程式建立顯示演算法或資料結構如何運作的圖形圖表。例如,在一個設計用於顯示按升序排序的列的應用程式中,每次按一下直方圖上的按鈕時,都會執行下一步。在這種情況下,這個演算法涉及的變數的值將會被顯示出來,這樣你就可以看到程式碼是如何執行的(讓人想起偵錯器的描述,對吧?)。如何下載並安裝創意工坊
- 您可以在此處下載小程式。
- 點擊WorkshopApplets.ZIP並下載包含小程式的檔案。
- 要了解小程序,您可以閱讀本主題及其評論。
這本書的優點
- 非常容易閱讀,許多示例幾乎都可以“在您的手指上”進行解釋;
- 讓你看到許多“經典”的東西,而不需要使用複雜的數學公式。好吧,幾乎沒有他們:)
- 儘管這些範例是用 Java 編寫的,但程式碼中發生的操作透過程式碼中的以下文字和註解進行了非常詳細的解釋。因此,任何程式語言的使用者都可以閱讀它,因為程式碼範例非常簡單:它們讀起來幾乎就像偽代碼一樣。
這本書的缺點
- 儘管有「手指上」的解釋,但其中還是有漏洞的。為了解釋排序數組,作者畫了一支足球隊,但那裡幾乎沒有描述希爾排序:我無法理解它並在互聯網上閱讀它;
- 可能存在拼字錯誤,通常是圖像或表格;
- 有些程式碼已經過時了。
類似物
我推薦本書的類似內容或後續書籍(對於想繼續學習的人):- Robert Sedgwick 的《Java 演算法》;
- 科門 (Thomas Cormen) 的《演算法:建構與分析》。
GO TO FULL VERSION