No42.检索--自组织线性表

线性表在大多数情况下根据关键码值进行排序,再进行检索。但是我们也可以不通过排序,而是估算记录被访问的频率更改记录在线性表中的位置。

三个估算方法(启发式规则):

1. 计 数 方 法 \color {red}{计数方法} 。类似于LFU(最不经常使用),每当访问一条记录时,若这条记录的访问数大于排在它前面的记录的访问数,这条记录就会在线性表中向前移动。
缺点:一旦一条记录被访问了很多次,不管将来的访问历史如何,它都会一直在线性表的前面。

2. 移 至 前 端 方 法 ( m o v e − t o − f r o n t ) \color{green}{移至前端方法(move-to-front)} movetofront。类似于LRU(最近最少使用),若找到一条记录,就把它放在线性表的最前面。移至前端方法对访问频率的局部变化能很好地反应,因为当一条记录在一段时间内被频繁访问时,那么在这段时间它会靠近线性表的前端。

3. 转 置 方 法 ( t r a n s p o s e ) \color{orange}{转置方法(transpose)} transpose。若找到一条记录,则把这条记录与它在线性表中的前一条记录交换位置。

例子:

假定有八条记录,其关键码值为从A到H,并且最初的排列顺序为:A,B,C,D,E,F,G,H(字母顺序)。当按照下面的字符流对这八条记录进行访问时,上面三种不同的启发式方法分别需要进行多少次比较。
F D F G E G F A D F G E

1.按照计数方法,

第一次:F1 A0 B0 C0 D0 E0 G0 H0
第二次:F1 D1 A0 B0 C0 E0 G0 H0
第三次:F2 D1 A0 B0 C0 E0 G0 H0
第四次:F2 D1 G1 A0 B0 C0 E0 H0
第五次:F2 D1 G1 E1 A0 B0 C0 H0
第六次:F2 G2 D1 E1 A0 B0 C0 H0
第七次:F3 G2 D1 E1 A0 B0 C0 H0
第八次:F3 G2 D1 E1 A1 B0 C0 H0
第九次:F3 G2 D2 E1 A1 B0 C0 H0
第十次:F4 G2 D2 E1 A1 B0 C0 H0
第十一次:F4 G3 D2 E1 A1 B0 C0 H0
第十二次:F4 G3 D2 E2 A1 B0 C0 H0
最后线性表中的记录顺序为:F G D E A B C H
需要比较的次数为:6+5+1+7+7+3+1+5+3+1+2+4=45

2.按照移至前端方法,

第一次:F A B C D E G H
第二次:D F A B C E G H
第三次:F D A B C E G H
第四次:G F D A B C E H
第五次:E G F D A B C H
第六次:G E F D A B C H
第七次:F G E D A B C H
第八次:A F G E D B C H
第九次:D A F G E B C H
第十次:F D A G E B C H
第十一次:G F D A E B C H
第十二次:E G F D A B C H
最后线性表中的记录顺序为:E G F D A B C H
需要比较的次数为:6+5+2+7+7+2+3+5+5+3+4+5=54

3.按照转置启发式规则

第一次:A B C D F E G H
第二次:A B D C F E G H
第三次:A B D F C E G H
第四次:A B D F C G E H
第五次:A B D F C E G H
第六次:A B D F C G E H
第七次:A B F D C G E H
第八次:A B F D C G E H
第九次:A B D F C G E H
第十次:A B F D C G E H
第十一次:A B F D G C E H
第十二次:A B F D G E C H
最后线性表中的记录顺序为:A B F D G E C H
需要比较的次数为:6+4+5+7+7+7+4+1+4+4+6+7=62

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值