第十七章 排序原文:Chapter 17 Sorting 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译计算机科学领域过度痴迷于排序算法。根据 CS 学生在这个主题上花费的时间,你会认为排序算法的选择是现代软件工程的基石。当然,现实是,软件开发人员可以在很多年中,或者整个职业生涯中,不必考虑排序如何工作。对于几乎所有的应用程序,它们都使 ......
395
0
0
2022-12-18
第十五章 爬取维基百科原文:Chapter 15 Crawling Wikipedia 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译在本章中,我展示了上一个练习的解决方案,并分析了 Web 索引算法的性能。然后我们构建一个简单的 Web 爬虫。15.1 基于 Redis 的索引器在我的解决方案中,我们在 Redis 中存储两种结构:对 ......
297
0
0
2022-12-18
第十六章 布尔搜索原文:Chapter 16 Boolean search 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译在本章中,我展示了上一个练习的解决方案。然后,你将编写代码来组合多个搜索结果,并按照它与检索词的相关性进行排序。16.1 爬虫的答案首先,我们来解决上一个练习。我提供了一个WikiCrawler的大纲;你的工作是填写 ......
316
0
0
2022-12-18
第十四章 持久化原文:Chapter 14 Persistence 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译在接下来的几个练习中,我们将返回到网页搜索引擎的构建。为了回顾,搜索引擎的组件是:抓取:我们需要一个程序,可以下载一个网页,解析它,并提取文本和任何其他页面的链接。索引:我们需要一个索引,可以查找检索项并找到包含它的页面。检 ......
302
0
0
2022-12-18
第十三章 二叉搜索树原文:Chapter 13 Binary search tree 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译本章介绍了上一个练习的解决方案,然后测试树形映射的性能。我展示了一个实现的问题,并解释了 Java 的TreeMap如何解决它。13.1 简单的MyTreeMap上一个练习中,我给了你MyTreeMap的大 ......
294
0
0
2022-12-18
第十二章 TreeMap原文:Chapter 12 TreeMap 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译这一章展示了二叉搜索树,它是个Map接口的高效实现。如果我们想让元素有序,它非常实用。12.1 哈希哪里不对?此时,你应该熟悉 Java 提供的Map接口和HashMap实现。通过使用哈希表来制作你自己的Map,你应该了解H ......
360
0
0
2022-12-18
第十一章 HashMap原文:Chapter 11 HashMap 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译上一章中,我们写了一个使用哈希的Map接口的实现。我们期望这个版本更快,因为它搜索的列表较短,但增长顺序仍然是线性的。如果存在n个条目和k个子映射,则子映射的大小平均为n/k,这仍然与n成正比。但是,如果我们与n一起增加k, ......
293
0
0
2022-12-18
第十章 哈希原文:Chapter 10 Hashing 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译在本章中,我定义了一个比MyLinearMap更好的Map接口实现,MyBetterMap,并引入哈希,这使得MyBetterMap效率更高。10.1 哈希为了提高MyLinearMap的性能,我们将编写一个新的类,它被称为MyBett ......
294
0
0
2022-12-18
第九章 Map接口原文:Chapter 9 The Map interface 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译在接下来的几个练习中,我介绍了Map接口的几个实现。其中一个基于哈希表,这可以说是所发明的最神奇的数据结构。另一个是类似的TreeMap,不是很神奇,但它有附加功能,它可以按顺序迭代元素。你将有机会实现这些数据结 ......
306
0
0
2022-12-18
第八章 索引器原文:Chapter 8 Indexer 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译目前,我们构建了一个基本的 Web 爬虫;我们下一步将是索引。在网页搜索的上下文中,索引是一种数据结构,可以查找检索词并找到该词出现的页面。此外,我们想知道每个页面上显示检索词的次数,这将有助于确定与该词最相关的页面。例如,如果用户提交 ......
270
0
0
2022-12-18
第七章 到达哲学原文:Chapter 7 Getting to Philosophy 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译本章的目标是开发一个 Web 爬虫,它测试了第 6.1 节中提到的“到达哲学”猜想。7.1 起步在本书的仓库中,你将找到一些帮助你起步的代码:WikiNodeExample.java包含前一章的代码,展示了 ......
271
0
0
2022-12-18
第六章 树的遍历原文:Chapter 6 Tree traversal 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译本章将介绍一个 Web 搜索引擎,我们将在本书其余部分开发它。我描述了搜索引擎的元素,并介绍了第一个应用程序,一个从维基百科下载和解析页面的 Web 爬行器。本章还介绍了深度优先搜索的递归实现,以及迭代实现,它使用 Ja ......
316
0
0
2022-12-18
第五章 双链表原文:Chapter 5 Doubly-linked list 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译本章回顾了上一个练习的结果,并介绍了List接口的另一个实现,即双链表。5.1 性能分析结果在之前的练习中,我们使用了Profiler.java,运行ArrayList和LinkedList的各种操作,它们具有一系 ......
274
0
0
2022-12-18
第四章 LinkedList原文:Chapter 4 LinkedList 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译这一章展示了上一个练习的解法,并继续讨论算法分析。4.1 MyLinkedList方法的划分我的indexOf实现在下面。在阅读说明之前,请阅读它,看看你是否可以确定其增长级别。public int indexOf( ......
388
0
0
2022-12-18
第三章 ArrayList原文:Chapter 3 ArrayList 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译本章一举两得:我展示了上一个练习的解法,并展示了一种使用摊销分析来划分算法的方法。3.1 划分MyArrayList的方法对于许多方法,我们不能通过测试代码来确定增长级别。例如,这里是MyArrayList的get的实现 ......
266
0
0
2022-12-18