欢迎来到天天文库
浏览记录
ID:41854370
大小:735.06 KB
页数:46页
时间:2019-09-03
《数据结构查找技术1-静态查找表》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第九章查找本章的主要内容是:查找的基本概念(难度系数*)静态查找表(难度系数**)动态查找表(难度系数****)哈希表(难度系数***)何谓查找表?查找表是由同一类型的数据元素(或记录)构成的集合。由于“集合”中的数据元素之间存在着松散的关系,因此查找表是一种应用灵便的结构。查找的基本概念对查找表经常进行的操作:1)查询某个“特定的”数据元素是否在查找表中;2)检索某个“特定的”数据元素的各种属性;3)在查找表中插入一个数据元素;4)从查找表中删去某个数据元素。不涉及插入和删除操作的查找。涉及插入和删除操作的查找。查找的基本概念静态查找适用于:查找集合一经生成,便只
2、对其进行查找,而不进行插入和删除操作,或经过一段时间的查找之后,集中地进行插入和删除等修改操作;动态查找适用于:查找与插入和删除操作在同一个阶段进行,例如当查找成功时,要删除查找到的记录,当查找不成功时,要插入被查找的记录。静态查找表动态查找表是数据元素(或记录)中某个数据项的值,用以标识(识别)一个数据元素(或记录)。关键字若此关键字可以识别唯一的一个记录,则称之谓“主关键字”。若此关键字能识别若干记录,则称之谓“次关键字”。50女李爽000525女齐梅000447女刘楠000325男张亮000238男王刚0001年龄性别姓名职工号1972.92003.71979
3、.92003.71990.4工作时间根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素或(记录)。查找若查找表中存在这样一个记录,则称“查找成功”。查找结果给出整个记录的信息,或指示该记录在查找表中的位置;否则称“查找不成功”。查找结果给出“空记录”或“空指针”。由于查找表中的数据元素之间不存在明显的组织规律,因此不便于查找。为了提高查找的效率,需要在查找表中的元素之间人为地附加某种确定的关系,换句话说,用另外一种结构来表示查找表。如何进行查找?查找的方法取决于查找表的结构。9.1静态查找表9.2动态查找树表9.3哈希表主要采用顺序查找技术和折半查找技
4、术。主要采用二叉排序树的查找技术。静态查找和动态查找均适用,主要采用散列技术。查找算法的性能查找算法时间性能通过关键码的比较次数来度量。关键码的比较次数与哪些因素有关呢?平均查找长度:将查找算法进行的关键码的比较次数的数学期望值定义为平均查找长度,即:ASLå==niiicp1ci取决于算法;pi与算法无关,取决于具体应用。如果pi是已知的,则平均查找长度只是问题规模的函数。9.1静态查找表数据对象D:数据关系R:D是具有相同特性的数据元素的集合。每个数据元素含有类型相同的关键字,可唯一标识数据元素。数据元素同属一个集合。ADTStaticSearchTable{C
5、reate(&ST,n);Destroy(&ST);Search(ST,key);Traverse(ST,Visit());基本操作P:}ADTStaticSearchTable构造一个含n个数据元素的静态查找表ST。Create(&ST,n);操作结果:销毁表ST。Destroy(&ST);初始条件:操作结果:静态查找表ST存在;若ST中存在其关键字等于key的数据元素,则函数值为该元素的值或在表中的位置,否则为“空”。Search(ST,key);初始条件:操作结果:静态查找表ST存在,key为和查找表中元素的关键字类型相同的给定值;按某种次序对ST的每个元素调
6、用函数Visit()一次且仅一次,一旦Visit()失败,则操作失败。Traverse(ST,Visit());初始条件:操作结果:静态查找表ST存在,Visit是对元素操作的应用函数;typedefstruct{//数据元素存储空间基址,建表时//按实际长度分配,0号单元留空intlength;//表的长度}SSTable;假设静态查找表的顺序存储结构为ElemType*elem;数据元素类型的定义为:typedefstruct{keyTypekey;//关键字域……//其它属性域}ElemType;,TElemType;一、顺序查找表二、有序查找表三、索引顺序表
7、以顺序表或线性链表表示静态查找表一、顺序查找表顺序查找(线性查找)基本思想:从线性表的一端向另一端逐个将关键码与给定值进行比较,若相等,则查找成功,给出该记录在表中的位置;若整个表检测完仍未找到与给定值相等的关键码,则查找失败,给出失败信息。101524612354098550123456789i例:查找key=35iiiii顺序查找(线性查找)intSeqSearch1(intr[],intn,intkey)//数组r[1]~r[n]存放查找集合{i=1;while(i<=n&&r[i]!=key)i++;if(i<=n)returni;elsereturn0
此文档下载收益归作者所有