Skip to Content
算法技术手册(原书第2 版)
book

算法技术手册(原书第2 版)

by George T.Heineman, Gary Pollice, Stanley Selkow
August 2017
Intermediate to advanced
360 pages
8h 35m
Chinese
China Machine Press
Content preview from 算法技术手册(原书第2 版)
89
5
搜索算法
给定一个集合
C
,我们可以执行下述两个基本查询:
存在性查询
集合
C
中包含某个给定的元素吗?通常,我们只想知道集合
C
中是否包含定元素
t
如果
t
存在,那么查询结果为真;否则,查询结果为假。
相关性查询
返回集合
C
中和目标键值
k
相关联的信息。通常键会与一个较为复杂的数据结构关
联在一起,我们将该数据结构称为“值”。这种查询通常是为了获取或者替换该值。
本章还会介绍如何使用一些数据结构来高效地处理搜索请求。当然,读者也许会考虑使
用第
4
章介绍的排序算法对集合
C
进行排序然后进行查找。这样搜索的效率固然会得到
改善,但同时也需要大量的额外费用去维护集合有序。尤其是在需要对集合中的元素进
频繁的删除和插入操作时,大量的额外费用将会抵消排序搜索带来的好处。
不管如何,算法的性能最终取决于它检查了多少个元素。下面提供了一些简单的策略来
选择搜索算法
小数据集
顺序搜索
的实现最为简单,而且内建于很多编程语言之中。只有在这个数据集只能
使用
迭代器
顺序访问的时候才会选择顺序搜索。
受限内存
如果集合是一个数组且保持不变,那么使用
二叉搜索
可以减少内存的使用。
动态数据集
如果集合中的元素改变频繁,那么基于
散列的搜索
或者
二叉搜索树
都是一个不错的
主意。两种算法都可以巧妙地使用数据结构减少费用
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

机器学习实战:基于Scikit-Learn、Keras 和TensorFlow (原书第2 版)

机器学习实战:基于Scikit-Learn、Keras 和TensorFlow (原书第2 版)

Aurélien Géron
Go语言编程

Go语言编程

威廉·肯尼迪

Publisher Resources

ISBN: 9787111562221