Book description
“一本極好又務實的資料結構入門書籍,讓讀者擁有剛好的理論知識以進行演算法分析,同時兼顧實際應用。”
-Barry Wittman
Associate Professor
Elizabethtown College
“經由閱讀本書,讀者進入Java collection framework的世界,使用Ant和JUnit,並建立一個有趣的網路搜尋引擎雛型,繼Think Java之後又一力作!”
-Chris Mayfield
Associate Professor
James Madison University
如果你是在學學生,或是準備要應徵軟體工程師的話,本書較其它同類型的書籍更清楚、簡明和深入,幫助你學習或複習,軟體工程中資料結構和演算法的一些重點。
藉由闡明理論架構之上的實用知識和技巧,作者Allen Downey呈現給你的是如何用資料結構,實作有效率的演算法,以及分析測量演算法的效率。你會用到很多Java collection framework(JCF)裡的重要類別,知道這些類別是如何被實作以及知道它們的執行效能。每一個章節都有實作練習題,還有對應的測試程式檢查讀者練習題解答是否正確。
‧使用像list和map這樣的資料結構,並瞭解其動作原理
‧製作一個可以讀取維基百科網頁、分析網頁內容而且瀏覽產出資料tree
‧分析程式碼以預測程式碼執行效率,以及程式要用多少記憶體
‧為Map介面作數個實作類別,過程中包括使用雜湊表以及二元搜尋樹
‧建立一個簡單的網頁搜尋引擎,引擎包含爬蟲和儲存網頁內容的索引器,以及能將資料回傳給使用者的檢索器
Table of contents
- 封面
- 書名頁
- 英文版權頁
- 目錄
- 前言
- 第一章 介面
- 為什麼需要兩種List
- Java中的Interface
- List interface
- 練習題一
- 第二章 演算法分析
- 選擇排序法
- Big O
- 練習題二
- 第三章 ArrayList
- 評估MyArrayList方法
- 評估add方法
- Problem size
- 鏈結資料型態
- 練習題三
- 小聊垃圾回收
- 第四章 LinkedList
- 評估MyLinkedList的方法
- 比較MyArrayList和MyLinkedList
- 測量
- 結果解讀
- 練習題四
- 第五章 雙向鏈結串列
- 效能測量結果
- 測量LinkedList方法
- 將元素加到LinkedList的尾端
- 雙向鏈結串列
- 選擇結構
- 第六章 Tree的遍歷
- 網頁搜尋
- HTML分析
- 使用jsoup
- 在DOM迭代
- 深度優先搜尋
- Java中的stack
- 迭代版DFS
- 第七章 找到Philosophy
- 開始
- Iterables和Iterators
- WikiFetcher
- 練習題五
- 第八章 Indexer
- 選擇資料結構
- TermCounter
- 練習題六
- 第九章 Map介面
- 實作MyLinearMap
- 練習題七
- 分析MyLinearMap
- 第十章 雜湊
- 雜湊
- 雜湊如何運作?
- 雜湊與可變物件
- 練習題八
- 第十一章 HashMap
- 練習題九
- 分析MyHashMap
- 取捨
- 評估MyHashMap
- 修正MyHashMap
- UML類別圖
- 第十二章 TreeMap
- Hash有什麼問題?
- 二元搜尋樹
- 練習題十
- 實作TreeMap
- 第十三章 二元搜尋樹
- 一個簡單的MyTreeMap
- 找Value
- 實作put
- 中序尋訪
- 對數時間方法
- 自我平衡樹
- 再一個練習
- 第十四章 持久性資料
- Redis
- Redis Client和Server
- 建立相容於Redis的索引
- Redis資料型態
- 練習題十一
- 一些額外的建議
- 設計提示
- 第十五章 爬行Wikipedia
- Redis版索引器
- 分析搜尋
- 分析索引
- 圖形遍歷
- 練習題十二
- 第十六章 布林搜尋
- 爬蟲解答
- 資訊檢索
- 布林搜尋
- 練習題十三
- Comparable和Comparator
- 額外練習
- 第十七章 排序
- 插入排序法
- 練習題十四
- 分析合併排序法
- 基數排序法
- 堆積排序法
- 有限堆積
- 空間複雜度
- 索引 (1/2)
- 索引 (2/2)
- 關於作者
- 出版記事
Product information
- Title: Think Data Structures|Java演算法實作和資料檢索
- Author(s):
- Release date: March 2018
- Publisher(s): GoTop Information, Inc.
- ISBN: None
You might also like
book
Think Python|學習程式設計的思考概念 第二版
適用Python 3 如同電腦科學家般思考 「《Think Python》讓我不停地會心微笑,Allen Downey的解說非常清晰,而他具啟發性的練習題目將能夠引發不同背景學習者的興趣。」 —Luciano Ramalho, ThoughtWorks技術總監,《流暢的Python》一書作者 如果你想要學習程式設計,Python就是極佳的起點。這本實務指南會帶你逐步了解這個程式語言,從基本的編程概念開始,再移往函式、遞迴、資料結構與物件導向設計等進階主題。在第二版中,所有的範例程式碼都已更新成了Python 3。 透過每章中的練習題,你將會實際動手嘗試你學到的程式設計概念。《Think Python》是高中學生或大學生理想的入門指南,也適合自學者、在家教育的學生和專業人士學習程式設計的基礎。剛入門的初學者將會學習如何在瀏覽器中使用Python編寫程式。 ■ 從基礎開始,包括語言的語法和語意 ■ …
book
打造可維護軟體|編寫可維護程式碼的10項法則 (Java版)
「這些指導方針正確無誤,以簡單明瞭、切實可行的方式,闡述高效開發者如何一貫地撰寫及交付高品質的程式碼。」 — George Marinos, 應用程式架構師, 希臘國家銀行 你可曾在修改他人程式碼時深感挫折與沮喪?今日,難以維護的程式碼已經成為軟體開發的大麻煩,導致代價不斐的時程延宕與程式缺陷。本書從實務出發,作為解決方案的一部分,提供10條切實可行的指導方針,幫助你成功交付容易維護及修改的絕妙軟體,事實上,這些原則可是淬煉自數百個實務系統的分析結果。 本書出自於Software Improvement Group(SIG)的眾顧問之手,不僅針對這個主題提供清晰且明確的解釋,更說明了如何將理論應用到實務的絕佳建議。雖然本書範例均以Java寫成,但這些原則也適用於使用其他語言的開發者。 ‧撰寫簡短的程式碼單元:限制方法與建構式的長度 ‧撰寫單純的程式碼單元:限制每個方法當中的分支點數量 ‧相同的程式碼只撰寫一次,避開複製程式碼臭蟲的風險 ‧透過將參數提取到物件中,保持單元介面簡短 ‧分離關注點,避免建構龐大的類別 ‧保持架構元件鬆散耦合 …
book
持續交付|使用Java
將程式部署至生產環境的必備工具與最佳做法 “除了《Effective Java 3rd Edition》外,這本書是我的每位工程師都會購買的書籍,而且它將帶來千倍的回報!” —Martijn Verburg jClarity與LJC Leader CEO “Daniel與Abraham在本書廣泛探討大量的雲端基礎元件,以及持續交付的相關技術。對任何想要成為專業雲端Java開發者的人來說,這本書是他們的首選。” —Ben Evans 作者與諮詢CTO 持續交付已經為業界及整個軟體交付生命週期帶來巨大的價值,但是想要採取這種做法,代表開發者必須掌握新的、在舒適圈以外的技術。在這本實用書籍中,二位作者教導Java開發者掌握架構設計、自動品保、應用程式包裝以及在各種平台上進行部署的技巧。 ‧了解持續交付的核心概念,以及如何開始及完成改用這種技術的旅程 …
book
算法技术手册(原书第2 版)
打造鲁棒性优秀的软件需要用到高效的算法,然而程序员们却对此知之甚少。新版的《算法技术手册》介绍了用于解决各种类型问题的已有算法,并帮助读者挑选和实现最适合自身需要的算法。不仅如此,书中还提供了恰到好处的数学知识来帮助读者理解和分析算法的性能。 本书侧重应用多于理论且规范严谨。书中提供了用多种程序设计语言实现的文档化的实际代码解决方案。此外,新版还增加了用Python实现的10多种新算法、Voronoi图算法实现以及包括R树(R-Trees)和四叉树(Quadtrees)在内的空间树结构等内容。 通过阅读本书,你将可以: 解决新的编码问题,提升现有解决方案的性能。 快速定位与问题相关的算法,并挑选最佳算法。 获取带有实现技巧提示的采用C、C++、Java和Python实现的算法解决方案。 学习算法的预期性能和最佳性能所需要的条件。 使用高级数据结构提升算法效率。