浅谈数据结构-查找
在上万条数据中,查找制定元素,这就是查找完成的功能。
查找表:由同一种类型元素构成的集合,由于“集合”中数据元素之间存在松散的关系,因此查找表是一种灵活应用的数据结构。
查找表的操作:
- 查询某个特定的数据元素是否在查找表中。
- 查询某个特定元素的各种属性。
- 在查找表中制定位置插入一条数据。
- 从查找表中删除特定的数据元素。
查找表中四个操作之间是紧密关联的,比如,插入一个数据:首先判断元素是否在查找表中,有,返回,没有插入。判断一个元素在查找表中,先是查找元素,然后获取属性,然后和插入的元素进行比较,相等表示有。删除同样的道理。在后续的章节中会讨论到,在查找表创建时,往往是有顺序的,所以插入和删除时不能打乱查找表中各个元素的顺序。
查找算法通常需要两个输入:
1、被查找的序列
2、要查找的关键词
查找算法的输出参数和返回值:
1、返回类型为 Error_code 的值用以表示是否查找成功
2、如果查找成功,返回 success, 输出参数 position 定位到目标所在位置
3、如果查找失败,返回 not present,输出参数可能是未定义或不同于已有位置的任何值
一、查找表分类
按照记录在表中的位置和特关键词之间的关系分为:静态查找表、动态查找表和Hash表
静态查找表:仅作查询和检索操作的表。
动态查找表:在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已经存在的数据元素。
Hash表:根据设定的Hash函数和所选中的处理冲突方法,将一组关键词映像到一个有限的、地址连续的地址集,并以关键字在地址集中的映像作为相应的记录在表中的存储位置,如此构造所得查找表称之为“hash”表。
对于静态表查找,经常用线性表结构来组织数据,这样可以使用顺序查找算法,如果再对主关键词排序,则可以用折半查找等技术进行高级查找。
动态表查找,比较复杂,在完成静态表查找操作情况下,增加了插入和删除工作,可以考虑二叉排序树的查找技术。
hash表中记录在表中的位置和它关键词之间通过hash函数建立一定的关系,当然用hash查找技术。
查找性能分析:通常把关键词的最多比较次数和平均比较次数作为基本的技术指标,前者叫最大查找长度,后者叫平均查找长度。
二、查找算法
查找在我们生活中无处不在,比如查公交,查机票,查酒店。。。这些都是查找。
查找算法分为:
在后续的章节中会重点介绍这几种查找算法。