第七章 查找

第七章 查找

7.1 查找的基本概念

问题:在哪查找?——查找表

查找表是由同一类型的数据元素(或记录)构成的集合。由于"集合"中的数据元素之间存在着松散的关系,因此查找表是一种应用灵便的结构。

问题:什么查找?

——根据给定的值,在查找表中确定一个其关键字等于给定值的数据元素。

关键字 用来表示一个数据元素的某个数据项的值

​ 主关键字 可唯一标识一个记录的关键字是主关键字

​ 次关键字 用于识别若干记录的关键字是次关键字

问题:查找是否成功?

若查找表中存在这样一个记录,则查找成功,查找结果给出整个记录的信息或标识查找表中的位置

否则,查找不成功,查找结果给出空指针或空记录

问题:查找的目的?

对查找表进行操作

  1. 查询某个元素是否在查找表中
  2. 检索某个元素的属性
  3. 插入一个元素
  4. 删除一个元素

查找表分成两类:

  • 静态查找表
    • 仅作查询(检索)操作
  • 动态查找表
    • 作插入和删除操作

评价查找算法指标:

​ 关键字平均比较次数,也称平均查找长度:ASL

7.2 线性表的查找

7.2.1 顺序查找(线性查找)

应用范围:顺序表或线性链表的静态查找表、表示元素之间无序

数据元素类型定义

typefdef struct{
   
	KeyType key;	//关键字域
	.....			//其他域
}ElemType
typefdef struct{
   
    ElemType *R;//表基址
    int length;//表长
}SSTable;
SSTable ST //定义顺序表ST

在顺序表ST中查找key的数据元素

例如:从头开始—查找13:找到,返回5。 从末尾开始—查找60:未找到,返回0

int Search_seq(SSTable ST,KeyType key){
   
    for(i=ST.length;i>=1;--i)
        if(ST.R[i].key==key) return i;
    return 0;
}

改进:把待查找关键字key存入表头(“哨兵”、“监视哨”),从后往前逐个比较,课免去查

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值