检索算法分类:
- 顺序表和线性表法
- 根据关键码值直接访问方法(散列表)
- 树索引方法
顺序检索
(关键码值按大小排序)
最基础的检索算法,但是遇到重复查找的庞大记录集合,顺序检索会慢到令人无法忍受。一般常用的索引方式是二分查找
自组织线性表
由于线性表大多数情况下是使用关键码进行顺序排序的,但是这对于一些特定情况将会减慢搜索速度,例如某一关键码时常出现,但是它又在线性表的末端,这样每次都得执行到末端才能访问到,因此自组织线性表应运而生。
它显著优于排序算法的地方在于不用对线性表进行排序操作,这意味着插入一条新纪录的代价很低,当需要频繁插入记录时,这补偿了检索的高代价。自组织线性表比检索树更容易实现
管理自组织线性表的常见的3种启发式规则:
- 频率计算(类LFU):用额外的空间存储线性表中各个元素被访问的次数,并按访问次数对线性表进行排序,这种方式的缺点是一段时间内访问次数最多的记录,即使后来都没出现该条记录的访问,在后面的很长一段时间都在最前面。
- 移至前端(类LRU):每次访问某条记录时,如果线性表中有该条记录,则将记录提到最前面,原位置前的记录往后挪位;如果没有该条记录,则将其插入到最前面,其他位置往后挪位。这种算法虽然解决了频率计数的滞留问题,但也有明显的缺点,例如当
- 转