用树结构存储的查找博客(笑)
禁止码迷,布布扣,豌豆代理,码农教程,爱码网等第三方爬虫网站爬取!
网络爬虫与搜索
我们天天在使用搜索引擎,因为他可以在互联网中为我们查找需要的信息。搜索引擎使用了一种爬虫技术,所谓网络爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,在互联网中有广泛的应用。随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。例如我们常用的百度、搜狗搜索等搜索引擎,都是一些企业级别的定制爬虫,这种爬虫可以实现对大量数据的快速查找。
既然我们这么喜欢查找,接下来我们也来了解一下查找的算法,从最简单的线性查找开始,慢慢地接触一些查找的原理。接下来我们需要先认识一些基本概念,方便我们对查找知识的学习。
查找的基本概念
查找表
运作查找算法的载体,我们称之为查找表。查找表是由同一类型的数据元素或记录构成的集合。由于“集合“”中的数据元素之间存在着完全松散的关系,因此查找表可以使用多种数据结构来实现。
关键字
例如我们在搜素引擎中输入的文字信息,就是关键字,这是查找的依据。关键字是数据元素或记录中某个数据项的值,用它可以标识一个数据元素或记录。若此关键字可以唯一地标识一个记录,则称此关键字为主关键字,不同记录的主关键字均不同。而用以识别若干记录的关键字称之为次关键字。当数据元素只有一个数据项时,关键字即为该数据元素的值。
查找
我们通过关键字,向查找表索要数据的行为称之为查找。查找是指根据给定的某个值,在查找表中确定一个其关键字等于给定值的记录或数据元素。若表中存在记录,则称查找成功,此时查找的结果可返回相关信息,或指示该记录在查找表中的位置。当表中不存在关键字等于给定值的记录时,查找不成功。
ASL
ASL 即平均查找长度,这是在查找操作中和给定值进行比较的关键字个数的期望值。这个是我们度量查找性能的重要指标,公式为:
其中 Pi 表示查找表中第 i 个记录的概率,Ci 表示在找到所需的关键字之前和给定值已进行的关键字比较个数。
线性查找
在查找的使用情景中,线性表是最简单的结构,很适合作为查找部分的开始。
左转博客——线性表查找!
树表查找
对于线性查找而言,当查找的数据发生了变化,进行修改的开销是很大的,因此线性查找适合静态查找。对于动态查找而言,用树结构来制作查找表会更为合适,因为动态地操作树结构的结点,开销远比顺序表小得多。
左转博客——树表查找与二叉排序树!
散列查找
通过散列技术将数据存储起来的所建成的存储结构,我们称之为哈希表(Hash table)。所谓散列技术就是数据保存的存储位置和关键字之间存在一个映射关系,使得关键字可以和存储位置直接对应起来。对于这种映射关系,我们称之为散列函数。这种查找方法,我们能一下子就知道其存储位置,并能进行快速地访问
左转博客——HASH (散列表)查找!
实例:基于词频的文件相似度
左转博客——PTA习题解析与思考——基于词频的文件相似度!
参考资料
《大话数据结构》—— 程杰 著,清华大学出版社
《数据结构(C语言版|第二版)》—— 严蔚敏 李冬梅 吴伟民 编著,人民邮电出版社
线性表查找
SkipList (跳跃表)解析及其实现
树表查找与二叉排序树
AVL 树
HASH (散列表)查找
HASH 链与“航空公司VIP客户查询”题解
PTA习题解析:是否完全二叉搜索树、二叉搜索树的最近公共祖先
PTA习题解析与思考——基于词频的文件相似度