No42.检索--自组织线性表
线性表在大多数情况下根据关键码值进行排序,再进行检索。但是我们也可以不通过排序,而是估算记录被访问的频率更改记录在线性表中的位置。 三个估算方法(启发式规则): 1. 计 数 方 法 \color {red}{计数方法} 计 数 方 法 。类似于LFU(最不经常使用),每当访问一条记录时,若这条记录的访问数大于排在它前面的记录的访问数,这条记录就会在线性表中向前移动。 缺点:一旦一条记录被访问了很多次,不管将来的访问历史如何,它都会一直在线性表的前面。 2. 移 至 前 端 方 法 ( m o v e − t o − f r o n t ) \color{green}{移至前端方法(move-to-front)} 移 至 前 端 方 法 ( m o v e − t o − f r o n t ) 。类似于LRU(最近最少使用),若找到一条记录,就把它放在线性表的最前面。移至前端方法对访问频率的局部变化能很好地反应,因为当一条记录在一段时间内被频繁访问时,那么在这段时间它会靠近线性表的前端。 3. 转 置 方 法 ( t r a n s p o s e ) \color{orange}{转置方法(transpose)} 转 置 方 法 ( t r a n s p o s e ) 。若找到一条记录,则把这条记录与它在线性表中的前一条记录交换位置。 例子: 假定有八条记录