检索(散列)

本文介绍了检索算法的不同类型,包括顺序检索、自组织线性表和散列方法。重点讲解了散列方法,包括开散列和闭散列,并讨论了线性探查中的墓碑机制和冲突解决策略,如伪随机探查、二次探查和双散列探查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

检索算法分类:

  1. 顺序表和线性表法
  2. 根据关键码值直接访问方法(散列表)
  3. 树索引方法

顺序检索

(关键码值按大小排序)
最基础的检索算法,但是遇到重复查找的庞大记录集合,顺序检索会慢到令人无法忍受。一般常用的索引方式是二分查找

自组织线性表

由于线性表大多数情况下是使用关键码进行顺序排序的,但是这对于一些特定情况将会减慢搜索速度,例如某一关键码时常出现,但是它又在线性表的末端,这样每次都得执行到末端才能访问到,因此自组织线性表应运而生。

它显著优于排序算法的地方在于不用对线性表进行排序操作,这意味着插入一条新纪录的代价很低,当需要频繁插入记录时,这补偿了检索的高代价。自组织线性表比检索树更容易实现

管理自组织线性表的常见的3种启发式规则:

  1. 频率计算(类LFU):用额外的空间存储线性表中各个元素被访问的次数,并按访问次数对线性表进行排序,这种方式的缺点是一段时间内访问次数最多的记录,即使后来都没出现该条记录的访问,在后面的很长一段时间都在最前面。
  2. 移至前端(类LRU):每次访问某条记录时,如果线性表中有该条记录,则将记录提到最前面,原位置前的记录往后挪位;如果没有该条记录,则将其插入到最前面,其他位置往后挪位。这种算法虽然解决了频率计数的滞留问题,但也有明显的缺点,例如当
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值