Think Data Structures|Java演算法實作和資料檢索

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

  1. 封面
  2. 書名頁
  3. 英文版權頁
  4. 目錄
  5. 前言
  6. 第一章 介面
  7. 為什麼需要兩種List
  8. Java中的Interface
  9. List interface
  10. 練習題一
  11. 第二章 演算法分析
  12. 選擇排序法
  13. Big O
  14. 練習題二
  15. 第三章 ArrayList
  16. 評估MyArrayList方法
  17. 評估add方法
  18. Problem size
  19. 鏈結資料型態
  20. 練習題三
  21. 小聊垃圾回收
  22. 第四章 LinkedList
  23. 評估MyLinkedList的方法
  24. 比較MyArrayList和MyLinkedList
  25. 測量
  26. 結果解讀
  27. 練習題四
  28. 第五章 雙向鏈結串列
  29. 效能測量結果
  30. 測量LinkedList方法
  31. 將元素加到LinkedList的尾端
  32. 雙向鏈結串列
  33. 選擇結構
  34. 第六章 Tree的遍歷
  35. 網頁搜尋
  36. HTML分析
  37. 使用jsoup
  38. 在DOM迭代
  39. 深度優先搜尋
  40. Java中的stack
  41. 迭代版DFS
  42. 第七章 找到Philosophy
  43. 開始
  44. Iterables和Iterators
  45. WikiFetcher
  46. 練習題五
  47. 第八章 Indexer
  48. 選擇資料結構
  49. TermCounter
  50. 練習題六
  51. 第九章 Map介面
  52. 實作MyLinearMap
  53. 練習題七
  54. 分析MyLinearMap
  55. 第十章 雜湊
  56. 雜湊
  57. 雜湊如何運作?
  58. 雜湊與可變物件
  59. 練習題八
  60. 第十一章 HashMap
  61. 練習題九
  62. 分析MyHashMap
  63. 取捨
  64. 評估MyHashMap
  65. 修正MyHashMap
  66. UML類別圖
  67. 第十二章 TreeMap
  68. Hash有什麼問題?
  69. 二元搜尋樹
  70. 練習題十
  71. 實作TreeMap
  72. 第十三章 二元搜尋樹
  73. 一個簡單的MyTreeMap
  74. 找Value
  75. 實作put
  76. 中序尋訪
  77. 對數時間方法
  78. 自我平衡樹
  79. 再一個練習
  80. 第十四章 持久性資料
  81. Redis
  82. Redis Client和Server
  83. 建立相容於Redis的索引
  84. Redis資料型態
  85. 練習題十一
  86. 一些額外的建議
  87. 設計提示
  88. 第十五章 爬行Wikipedia
  89. Redis版索引器
  90. 分析搜尋
  91. 分析索引
  92. 圖形遍歷
  93. 練習題十二
  94. 第十六章 布林搜尋
  95. 爬蟲解答
  96. 資訊檢索
  97. 布林搜尋
  98. 練習題十三
  99. Comparable和Comparator
  100. 額外練習
  101. 第十七章 排序
  102. 插入排序法
  103. 練習題十四
  104. 分析合併排序法
  105. 基數排序法
  106. 堆積排序法
  107. 有限堆積
  108. 空間複雜度
  109. 索引 (1/2)
  110. 索引 (2/2)
  111. 關於作者
  112. 出版記事

Product information

  • Title: Think Data Structures|Java演算法實作和資料檢索
  • Author(s): Allen B. Downey
  • Release date: March 2018
  • Publisher(s): GoTop Information, Inc.
  • ISBN: None

You might also like

book

持續交付|使用Java

by Daniel Bryant, Abraham Marín-Pérez

將程式部署至生產環境的必備工具與最佳做法 “除了《Effective Java 3rd Edition》外,這本書是我的每位工程師都會購買的書籍,而且它將帶來千倍的回報!” —Martijn Verburg jClarity與LJC Leader CEO “Daniel與Abraham在本書廣泛探討大量的雲端基礎元件,以及持續交付的相關技術。對任何想要成為專業雲端Java開發者的人來說,這本書是他們的首選。” —Ben Evans 作者與諮詢CTO 持續交付已經為業界及整個軟體交付生命週期帶來巨大的價值,但是想要採取這種做法,代表開發者必須掌握新的、在舒適圈以外的技術。在這本實用書籍中,二位作者教導Java開發者掌握架構設計、自動品保、應用程式包裝以及在各種平台上進行部署的技巧。 ‧了解持續交付的核心概念,以及如何開始及完成改用這種技術的旅程 …

book

現代JavaScript實務應用

by Nicolas Bevacqua

深入探討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項必修法則

by Pete Goodliffe

“本書會引發你對程式設計藝術與科學的熱情。Pete 知道:卓越的軟體,是優秀的人們盡最大努力所完成的。” -Lisa Crispin 《Agile Testing: A Practical Guide for Testers and Agile Teams》作者 如果你熱愛程式設計,想要提升自己的能力,那你就找到正確的資源了。《Code Craft …

book

打造可維護軟體|編寫可維護程式碼的10項法則 (Java版)

by Joost Visser

「這些指導方針正確無誤,以簡單明瞭、切實可行的方式,闡述高效開發者如何一貫地撰寫及交付高品質的程式碼。」 — George Marinos, 應用程式架構師, 希臘國家銀行 你可曾在修改他人程式碼時深感挫折與沮喪?今日,難以維護的程式碼已經成為軟體開發的大麻煩,導致代價不斐的時程延宕與程式缺陷。本書從實務出發,作為解決方案的一部分,提供10條切實可行的指導方針,幫助你成功交付容易維護及修改的絕妙軟體,事實上,這些原則可是淬煉自數百個實務系統的分析結果。 本書出自於Software Improvement Group(SIG)的眾顧問之手,不僅針對這個主題提供清晰且明確的解釋,更說明了如何將理論應用到實務的絕佳建議。雖然本書範例均以Java寫成,但這些原則也適用於使用其他語言的開發者。 ‧撰寫簡短的程式碼單元:限制方法與建構式的長度 ‧撰寫單純的程式碼單元:限制每個方法當中的分支點數量 ‧相同的程式碼只撰寫一次,避開複製程式碼臭蟲的風險 ‧透過將參數提取到物件中,保持單元介面簡短 ‧分離關注點,避免建構龐大的類別 ‧保持架構元件鬆散耦合 …