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
持續交付|使用Java
將程式部署至生產環境的必備工具與最佳做法 “除了《Effective Java 3rd Edition》外,這本書是我的每位工程師都會購買的書籍,而且它將帶來千倍的回報!” —Martijn Verburg jClarity與LJC Leader CEO “Daniel與Abraham在本書廣泛探討大量的雲端基礎元件,以及持續交付的相關技術。對任何想要成為專業雲端Java開發者的人來說,這本書是他們的首選。” —Ben Evans 作者與諮詢CTO 持續交付已經為業界及整個軟體交付生命週期帶來巨大的價值,但是想要採取這種做法,代表開發者必須掌握新的、在舒適圈以外的技術。在這本實用書籍中,二位作者教導Java開發者掌握架構設計、自動品保、應用程式包裝以及在各種平台上進行部署的技巧。 ‧了解持續交付的核心概念,以及如何開始及完成改用這種技術的旅程 …
book
現代JavaScript實務應用
深入探討ES6規格與JavaScript的未來發展 ”《現代JavaScript實務應用》一書,帶給你大量的新語法和語義,可讓你的程式碼在表達上更具敘述性。Nicolás化繁為簡,用簡單的範例說明複雜的新功能觀念,這真是令人驚艷,也讓你能夠快速上手。“ -Kent C. Dodds Papal, TC39 想要深入瞭解現代JavaScript,你必須學習它繼承的原始技術規格,也就是ESMAScript 6(ES6)。本書以實務角度探討ES6,且不遺漏技術規格的說明和實作細節的技巧。搭配實務範例,作者Nicolás Bevacque指導你用新的方法處理非同步流程、宣告物件或函式、建立代理器或集合,以及許多其他的特徵功能。 本書是《模組化JavaScript系列》叢書的第一本書,《現代JavaScript實務應用》一書為JavaScript和Node.js開發人員準備了模組化功能設計的課程內容,而功能測試、設計和部署則會在本系列叢書的後續作品中探討。 本書內容包含: ‧JavaScript及其標準發展流程如何演進 ‧重要的ES6變更調整,包含箭頭函式、解構賦值、let和const ‧宣告物件原型的類別語法以及新的Symbol基礎元件 ‧如何用Promise、迭代器、產生器和非同步函式處理流程控制 …
book
成為卓越程式設計師的38項必修法則
“本書會引發你對程式設計藝術與科學的熱情。Pete 知道:卓越的軟體,是優秀的人們盡最大努力所完成的。” -Lisa Crispin 《Agile Testing: A Practical Guide for Testers and Agile Teams》作者 如果你熱愛程式設計,想要提升自己的能力,那你就找到正確的資源了。《Code Craft …
book
打造可維護軟體|編寫可維護程式碼的10項法則 (Java版)
「這些指導方針正確無誤,以簡單明瞭、切實可行的方式,闡述高效開發者如何一貫地撰寫及交付高品質的程式碼。」 — George Marinos, 應用程式架構師, 希臘國家銀行 你可曾在修改他人程式碼時深感挫折與沮喪?今日,難以維護的程式碼已經成為軟體開發的大麻煩,導致代價不斐的時程延宕與程式缺陷。本書從實務出發,作為解決方案的一部分,提供10條切實可行的指導方針,幫助你成功交付容易維護及修改的絕妙軟體,事實上,這些原則可是淬煉自數百個實務系統的分析結果。 本書出自於Software Improvement Group(SIG)的眾顧問之手,不僅針對這個主題提供清晰且明確的解釋,更說明了如何將理論應用到實務的絕佳建議。雖然本書範例均以Java寫成,但這些原則也適用於使用其他語言的開發者。 ‧撰寫簡短的程式碼單元:限制方法與建構式的長度 ‧撰寫單純的程式碼單元:限制每個方法當中的分支點數量 ‧相同的程式碼只撰寫一次,避開複製程式碼臭蟲的風險 ‧透過將參數提取到物件中,保持單元介面簡短 ‧分離關注點,避免建構龐大的類別 ‧保持架構元件鬆散耦合 …