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

软件技术基础 算法与数据结构五.pptx

  1. 1、本文档共49页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件技术基础 算法与数据结构五第2页/共49页3.6 查找与排序 查找与排序是计算机最频繁的操作,特别是大量数据的数据处理领域。排序和查找是两个密切相关、很基本的技术。查找和排序一般数据结构比较简单,主要是算法问题。在早期计算机内存紧张,速度慢时,对程序员尤其重要。如今CPU快速、内存大,相对重要性降低。但是作为学习编程,“想得到它就写得出算法来”还是非常有意义的,还可以开阔思路。它包含了许多编程技巧的精髓。《软件技术基础》电子教案/49第3页/共49页3.6.1 查找查找基本概念 查找表: 由同一类数据构成的用于查找的集合被称作查找表。 查找表是具有一定存储结构的数据集合,比如顺序表结构、链式结构、树形结构等。 查找往往根据数据元素的某个属性进行。例如根据学号查找某个学生记录。这种被用于查找的元素属性一般称为关键字,它往往可以唯一标识一个元素。 《软件技术基础》电子教案/49第4页/共49页 静态查找表: 查找表一旦建立,在以后的查找过程中就不会改变。它所对应的查找算法属于静态查找技术。 动态查找表:查找表建立后,在后来的查找过程中仍会改变查找表的内容。它所对应的查找算法属于动态查找技术。 动态查找的例子——词汇统计问题。就是统计一篇文章中使用了多少词汇以及每个词汇的使用次数。 解决方法是先建立一个空的查找表,以后每读到一个词就在查找表中查询一下,如果该词汇存在则将其使用次数加一,否则将新词插入到查找表中并设使用次数为一次。显然,这个查找表是不断扩张的。 /49第5页/共49页平均查找长度: 为了确定数据元素在查找表中的位置,需要将给定值和表中的数据元素的关键字进行比较的次数的期望值。平均查找长度ASL的计算方法为: 其中: n 为表长;Pi为查找第i个元素的概率。Ci为找到该记录时,曾和给定值比较过的数据元素的个数。 在等概率条件下(Pi=1/n)这时平均查找长度为:《软件技术基础》电子教案/49查找表定义 第6页/共49页#define maxsize 100/*查找表最大长度 */typedef int KeyType; /*整型*/ 涉及的数据记录至少含有一个关键字段(域):typedef struct { KeyType key; ………}DataType;typedef struct { DataType r[maxsize];/* 数据元素存储空间 */ int length;/* 表的长度 */}Sqlist;《软件技术基础》电子教案/49线性表的查找第7页/共49页常见的线性表查找算法顺序查找 折半查找 分块查找 《软件技术基础》电子教案/49顺序查找第8页/共49页顺序查找改进算法:int SeqSearch(Sqlist s,KeyType k){/* 在表s中顺序查找关键字k,若查找成功,则函数值为该元素在表中的位置,若查找失败,返回-1。*/ int i; for (i=0 ; is.length ; i++) if(s.r[i].key==k) return(i);/* 查找成功 */ return(-1);/* 查找失败 */}思考:此算法的效率能提高吗?/49顺序查找第9页/共49页顺序查找改进算法:int SeqSearch_gai(Sqlist s,KeyType k){ int i; ; s.r[-1].key=k;/* 设置前哨站 */ while (s.r[i].key!=k)/* 从表尾开始向前扫描 */ i--; return(i);} 请比较这两个算法,由于改进后的算法不需要判断当前下标是否出界,时间效率几乎提高了一倍.顺序查找的平均查找长度为 /49iiiii找64-1 0 1 2 3 4 5 6 7 8 9 10例 5 13 19 21 37 56 64 75 80 88 92第10页/共49页64比较次数=5比较次数:查找第n个元素: 1查找第n-1个元素:2……….查找第1个元素:n查找第i个元素:n+1-i查找失败:n+1监视哨《软件技术基础》电子教案/49有序表的查找 第11页/共49页 前提:表中的结点按关键字递增有序 首先将待查值k和表中间位置上的结点关键字进行比较,若两者相等,则查找成功; 否则,若k值小,则在表的前半部分中继续利用折半查找法查找,若k值大,则在表的后半部分中继续利用折半查找法查找 这样,经过一次关键字比较缩小一半的查找区间,如此进行下去,直到查找到该关键字或查找失败。《软件技术基础》电子教案/4

文档评论(0)

kuailelaifenxian + 关注
官方认证
内容提供者

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

认证主体太仓市沙溪镇牛文库商务信息咨询服务部
IP属地上海
统一社会信用代码/组织机构代码
92320585MA1WRHUU8N

1亿VIP精品文档

相关文档