网站大量收购独家精品文档,联系QQ:2885784924

第1节 顺序查找.ppt

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章 查找技术 数据结构课程的内容 一、顺序查找 二、对分查找 三、分块查找 四、二叉排序树查找 第七章 查找技术 何谓查找表 ? 查找表是由同一类型的数据元素(或记录)构成的集合。 由于“集合”中的数据元素之间存在着松散的关系,因此查找表是一种应用灵便的结构。 第七章 查找技术 对查找表经常进行的操作: 查询某个“特定的”数据元素是否在查找表中; 检索某个“特定的”数据元素的各种属性; 在查找表中插入一个数据元素; 从查找表中删去某个数据元素。 第七章 查找技术 仅作查询和检索操作的查找表。 静态查找表 有时在查询之后,还需要将“查询”结果为“不在查找表中”的数据元素插入到查找表中;或者,从查找表中删除其“查询”结果为“在查找表中”的数据元素。 动态查找表 查找表可分为两类: 第七章 查找技术 是数据元素(或记录)中某个数据项的值,用以标识(识别)一个数据元素(或记录)。 关键字 若此关键字可以识别唯一的一个记录,则称之谓“主关键字”。 若此关键字能识别若干记录,则称之谓“次关键字”。 第七章 查找技术 根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素或(记录)。 查找 若查找表中存在这样一个记录,则称“查找成功”。查找结果给出整个记录的信息,或指示该记录在查找表中的位置; 否则称“查找不成功”。查找结果给出“空记录”或“空指针”。 第七章 查找技术 ST.elem 假设给定值 e=64, 要求 ST.elem[k] = e, 问: k = ? k k §7.1 顺序查找 以顺序表或线性链表表示静态查找表。 1.线性表在链式存储结构下的顺序查找 链表的存储结构: struct node { ElemType *elem; //数据元素类型 struct node next; //链表指针 }lSTable; 技巧:只要知道头指针head就可以“顺藤摸瓜” 算法思想: §7.1 顺序查找 struct node *lserch ( struct node *head, ET x) //函数返回被查找元素x 所在接点的存储地址,如果在线形表中不存在元素x的接点,则返回NULL { struct node k; k=head; while ((k!=NULL)(k-d!=x) k=k-next; return (k); §7.1 顺序查找 顺序表的存储结构: typedef struct { ElemType *elem; //表基址,0号单元留空 //表容量为全部元素 int length; //表长,即表中数据元素个数 }SSTable; 2.线性表在顺序存储结构下的顺序查找 技巧:把待查关键字key存入表头或表尾(俗称“哨兵”),从相反方向查找。 算法思想: §7.1 顺序查找 若将待查找的特定值key存入顺序表的首部(如0号单元),则顺序查找的实现方案为:从后向前逐个比较! int Search_Seq( SSTable ST , KeyType key ){ //在顺序表ST中,查找关键字与key相同的元素;若成功,返回其位置信息,否则返回0 ST.elem[0].key =key; //设立哨兵,可免去查找过程中每一步都要检测是否查找完毕。 for( i=ST.length; ST.elem[ i ].key!=key; - - i ); //不要用for(i=n; i0; - -i) 或 for(i=1; i=n; i++) return i; //若到达0号单元才结束循环,说明不成功,返回0值(i=0)。成功时则返回找到的那个元素的位置i。 } // Search_Seq 总计全部比较次数为:1+2+…+n = (1+n)n/2 未考虑查找不成功的情况:查找哨兵所需的比较次数为n+1 这是查找成功的情况 若求某一个元素的平均查找次数,还应当除以n(等概率), 即: 平均查找长度ASL=(1+n)/2 ,时间效率为 O(n) 分析: 查找第1个元素所需的比较次数为1; 查找第2个元素所需的比较次数为2; …… 查找第n个元素所需的比较次数为n; 分析顺序查找的时间性能

文档评论(0)

wxc6688 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档