C程序设计第二版谭浩强.PPT

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C程序设计第二版谭浩强

数据结构 山东大学管理学院 戚桂杰 第六章 查找/检索 本章将介绍各种查找算法,主要内容包括: (1)表、关键字、查找、静态查找、动态查找、树表、散列表等术语。 (2)顺序查找、折半查找、分块查找等在顺序表上完成的查找算法。 (3)在二叉查找树、B树等树表结构上完成的查找方法。 (4)散列表查找 §1 基本概念 查找表(Search Table) 是由同一类型的数据元素(或记录)构成的集合。 静态查找表( Static Search Table) 动态查找表( Dynamic Search Table) 所谓“查找”即为在一个含有众多的数据元素(或记录)的查找表中找出某个“特定”的数据元素(或记录)。 关键字(Key)是数据元素(或记录)中某个数据项的值,用它可以标识一个数据元素(或记录)。 主关键字(Primary Key) 查找(Searching)根据给定的某个值,在查找表中确定一个其关键字等于给定值的记录或数据元素。 查找成功、查找不成功 typedef float KeyType; typedef int KeyType; typedef char *KeyType; typedef struct { KeyType key; … }ElemType; #define EQ(a,b) ((a)==(b)) #define LT(a,b) ((a)(b)) #define LQ(a,b) ((a)=(b)) #define EQ(a,b) (!strcmp((a),(b))) #define LT(a,b) (strcmp((a),(b))0) #define LQ(a,b) (strcmp((a),(b))=0) … 查找操作的性能分析 定义:为确定记录在查找表中的位置,需和给定值进行比较的关键字个数的期望值称为查找算法在查找成功时的平均查找长度(Average Search Length)。 对于含有n个记录的表,查找成功时的平均查找长度为 ASL= 其中:Pi为查找表中第i个记录的概率。 Ci为找到表中其关键字与给定值相等的第i个记录时,和给定值已进行过比较的关键字个数。 §2 静态查找表 一、顺序查找 查找表的顺序存储结构定义如下:ElemType ST[MAXNUM] int SequentialSearch(ElemType ST[ ],KeyType key, int n) { //在序列ST[0]~ST[n-1]中查找关键字为key的数据元素;在序列尾部设置一监督哨。 int i; ST[n].key = key; i=0; while(!EQ(ST[i].key,key)) i++; if (in){ printf(“查找成功”); return(i); } else{ printf(“查找失败”); return(-1); } } §2 静态查找表 一、顺序查找 顺序查找算法成功时的平均查找长度为: ASL = = = 查找不成功时的平均查找长度为: ASL = = = 顺序查找的平均查找长度为: ASL = + = 二、折半查找 将查找表中各个记录按关键字排序形成有序表,然后对有序表进行折半查找 int BinarySearch(ElemType ST[ ],KeyType searchkey,int n){ //对有序表序列ST[0]~ST[n-1]进行折半查找 int bottom,top,middle; bottom = 0;top = n-1; while(bottom<=top){ middle = (bottom+top)/2; if(EQ(searchkey,ST[middle].key)){ printf(“查找成功”); return(middle);} else if (LT(searchkey,ST[middle].key))top = middle -1; else bottom = middle + 1; } printf(“查找失败”); return (-1); } 算法6.2 折半查找 斐波那契查找 插值

文档评论(0)

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

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

1亿VIP精品文档

相关文档