小白算法积累——顺序查找1#“概率重心”前移

本文探讨了在顺序表中应用概率重心前移策略来提高检索效率的方法,通过将高频检索结点向前移动,减少平均检索次数。文章详细介绍了在顺序结构下实现此策略的具体算法,并提及了链式结构的实现思路。

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

题目:线性表中各结点的检索概率不等时,可用如下策略提高顺序检索的效率:概率重心前移(学霸往前坐)
即:若找到指定的结点,则将该结点和其前驱结点(若存在)交换,使得经常被检索的结点尽量位于表的前端。
试设计在顺序结构和链式结构的线性表上实现上述策略的顺序检索算法。

关键字: 线性表顺序查找;概率重心前移;两种存储结构

思路:
检索时可以从表头开始向后顺序扫描,若找到指定的结点,则将该结点和前驱节点(若存在)交换。

1.采用顺序表存储结构的算法实现:
代码:

int SeqSrch(RcdType R[],ElemType k){//顺序表查找线性表,找到后和前面的元素交换
  int i=0;
  while((R[i].key!=k)&&(i<n))
    i++;//从前向后顺序查找指定结点
  if(i<n&&i>0){//若找到,则交换
    temp=R[i];
    R[i]=R[i-1];
    R[i-1]=temp;
    return --i;//交换成功,则返回交换后的位置
  }
  else return -1;//交换失败
 
}

2.链式存储:略
注:为了保证交换结点顺序时可以找到前驱结点,需要设立三个指针

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值