数据结构-查找DS-chap.ppt
《数据结构-查找DS-chap.ppt》由会员分享,可在线阅读,更多相关《数据结构-查找DS-chap.ppt(53页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、南昌航空大学计算机学院南昌航空大学计算机学院/软件学院软件学院 1 1第第8 8章章 查找查找南昌航空大学计算机学院南昌航空大学计算机学院/软件学院软件学院 2 2第第8 8章章 查找查找主要内容主要内容n第第2 2章至第章至第7 7章章线性或非线性的数据结构线性或非线性的数据结构n本章本章查找表查找表(实际应用中大量使用(实际应用中大量使用 )n静态查找表及查找算法静态查找表及查找算法n顺序表顺序表n有序表有序表n静态树表静态树表n索引顺序表索引顺序表n动态查找表及查找算法动态查找表及查找算法n二叉排序树二叉排序树n平衡的二叉排序树平衡的二叉排序树nB B树树n哈希表及查找算法哈希表及查找算
2、法n哈希表哈希表南昌航空大学计算机学院南昌航空大学计算机学院/软件学院软件学院 3 3第第8 8章章 查找查找重点与难点重点与难点n本章的重点本章的重点n静态查找表及查找算法静态查找表及查找算法n顺序表顺序表顺序查找顺序查找n有序表有序表折半查找折半查找n动态查找表及查找算法动态查找表及查找算法n二叉排序树二叉排序树查找、建立与删除查找、建立与删除n哈希表及查找算法哈希表及查找算法n哈希表哈希表建立、查找建立、查找南昌航空大学计算机学院南昌航空大学计算机学院/软件学院软件学院 4 4第第8 8章章 查找查找重点与难点重点与难点n本章的难点本章的难点n静态查找表及查找算法静态查找表及查找算法n静
3、态树表静态树表n动态查找表及查找算法动态查找表及查找算法n二叉排序树二叉排序树查找、建立与删除查找、建立与删除n平衡的二叉排序树平衡的二叉排序树nB B树树n哈希表及查找算法哈希表及查找算法n哈希表哈希表建立、查找建立、查找南昌航空大学计算机学院南昌航空大学计算机学院/软件学院软件学院 5 5第第8 8章章 查找查找基本概念基本概念1.1.关键字关键字(Key)是数据元素是数据元素(或记录或记录)中某个数据项的值,用中某个数据项的值,用它可以标识它可以标识(识别识别)一个数据元素一个数据元素(或记录或记录)。若此关键字可。若此关键字可以唯一地标识一个记录,则称此关键字以唯一地标识一个记录,则称
4、此关键字为主关键字为主关键字(Primary Key)(Primary Key)(对不同的记录,其主关键字均不同对不同的记录,其主关键字均不同)。反之,。反之,称用以识别若干记录的关键字为称用以识别若干记录的关键字为次关键字次关键字(Secondary Key)(Secondary Key)。当数据元素只有一个数据项时,其关键字即为该数据元素当数据元素只有一个数据项时,其关键字即为该数据元素的值。的值。2.2.查找查找(Searching)根据给定的某个值,在查找表中确定根据给定的某个值,在查找表中确定一个其关键字等于给定值的记录或数据元素。若表中存在一个其关键字等于给定值的记录或数据元素。若
5、表中存在这样的一个记录,则称查找是成功的,查找的结果为给出这样的一个记录,则称查找是成功的,查找的结果为给出整个记录的信息,或指示该记录在查找表中的位置;若表整个记录的信息,或指示该记录在查找表中的位置;若表中不存在关键字等于给定值的记录,则称查找不成功,此中不存在关键字等于给定值的记录,则称查找不成功,此时查找的结果可给出一个时查找的结果可给出一个“空空”记录或记录或“空空”指针。指针。南昌航空大学计算机学院南昌航空大学计算机学院/软件学院软件学院 6 6第第8 8章章 查找查找基本概念基本概念n查找表查找表(SearchTable):由同一类型的数据元素:由同一类型的数据元素(或或记录记录
6、)构成的集合。构成的集合。n由于由于“集合集合”中的数据元素之间存在着完全松散的关系,因中的数据元素之间存在着完全松散的关系,因此查找表是一种非常灵便的数据结构。此查找表是一种非常灵便的数据结构。n对查找表经常进行的操作:对查找表经常进行的操作:n查询某个查询某个“特定的特定的”数据元素是否在查找表中;数据元素是否在查找表中;n检索某个检索某个“特定的特定的”数据元素的各种属性;数据元素的各种属性;n在查找表中插入一个数据元素;在查找表中插入一个数据元素;n从查找表中删去某个数据元素。从查找表中删去某个数据元素。n查找表的分类:查找表的分类:n静态查找表静态查找表(StaticSearchTa
7、ble):对查找表只作前两种统:对查找表只作前两种统称为称为“查找查找”的操作。的操作。n动态查找表动态查找表(DynamicSearchTable):在查找过程中同时:在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已存插入查找表中不存在的数据元素,或者从查找表中删除已存在的某个数据元素。在的某个数据元素。南昌航空大学计算机学院南昌航空大学计算机学院/软件学院软件学院 7 7第第8 8章章 查找查找8.1 8.1 静态查找表静态查找表n抽象数据类型抽象数据类型静态查找表静态查找表的定义的定义ADT StaticSearchTableADT StaticSearchTablen
8、数据对象数据对象D D:具有相同特性的数据元素的集合。各个数据具有相同特性的数据元素的集合。各个数据元素均含有类型相同,可唯一标识数据元素的关键字。元素均含有类型相同,可唯一标识数据元素的关键字。n数据关系数据关系R R:数据元素同属一个集合。数据元素同属一个集合。n基本操作基本操作P P:Create(&STCreate(&ST,n)n);操作结果:构造一个含操作结果:构造一个含n n个数据元素的静态查找表个数据元素的静态查找表STST。Destroy(&ST)Destroy(&ST);初始条件:静态查找表初始条件:静态查找表STST存在。存在。操作结果:销毁表操作结果:销毁表STST。南昌
9、航空大学计算机学院南昌航空大学计算机学院/软件学院软件学院 8 8第第8 8章章 查找查找8.1 8.1 静态查找表静态查找表n抽象数据类型抽象数据类型静态查找表静态查找表的定义的定义Search(STSearch(ST,key)key);初始条件:静态查找表初始条件:静态查找表STST存在,存在,keykey为和关键字类型相为和关键字类型相同的给定值。同的给定值。操作结果:若操作结果:若STST中存在其关键字等于中存在其关键字等于keykey的数据元素,的数据元素,则函数值为该元素的值或在表中位置,否则为则函数值为该元素的值或在表中位置,否则为“空空”。Traverse(STTraverse
10、(ST,visit()visit();初始条件:静态查找表初始条件:静态查找表STST存在,存在,visitvisit是对元素操作的是对元素操作的应用函数。应用函数。操作结果:按某种次序对操作结果:按某种次序对STST的每个元素调用函数的每个元素调用函数visitvisit()()一次且仅一次,一旦一次且仅一次,一旦visit()visit()失败,则操作失败。失败,则操作失败。ADT StaticSearchTable ADT StaticSearchTable南昌航空大学计算机学院南昌航空大学计算机学院/软件学院软件学院 9 9第第8 8章章 查找查找8.1 8.1 静态查找表静态查找表n
11、小结小结n顺序表的(简单)查找顺序表的(简单)查找n设置监视哨设置监视哨n适用的存储结构:顺序、链式适用的存储结构:顺序、链式n有序表的折半查找有序表的折半查找n有序表的等概率查找有序表的等概率查找n适用的存储结构:顺序、链式适用的存储结构:顺序、链式n其他有序表查找方法:斐波那契查找、插值查找其他有序表查找方法:斐波那契查找、插值查找n静态树表的查找静态树表的查找n有序表的不等概率查找有序表的不等概率查找n适用的存储结构:二叉链表适用的存储结构:二叉链表n索引顺序表的查找索引顺序表的查找n顺序表的查找的改进顺序表的查找的改进n适用的存储结构:顺序、顺序与链式结合适用的存储结构:顺序、顺序与链
12、式结合南昌航空大学计算机学院南昌航空大学计算机学院/软件学院软件学院 10 10第第8 8章章 查找查找8.2 8.2 动态查找表动态查找表n动态查找表的特点动态查找表的特点n表结构本身是在查找过程中表结构本身是在查找过程中动态生成动态生成的,即对于给定的,即对于给定值值key,若表中存在其关键字等于,若表中存在其关键字等于key的记录,则查的记录,则查找成功并返回位置信息;否则,插入关键字等于找成功并返回位置信息;否则,插入关键字等于key的记录。的记录。n一种基于树的查找法(树表查找法)一种基于树的查找法(树表查找法)n将待查表组织成特定树的形式并在树结构上实现查找将待查表组织成特定树的形
13、式并在树结构上实现查找的方法的方法。南昌航空大学计算机学院南昌航空大学计算机学院/软件学院软件学院 11 11第第8 8章章 查找查找8.2 8.2 动态查找表动态查找表n抽象数据类型抽象数据类型动态查找表动态查找表的定义的定义ADT DynamicSearchTableADT DynamicSearchTablen数据对象数据对象D D:具有相同特性的数据元素的集合。各个数具有相同特性的数据元素的集合。各个数据元素均含有类型相同,可唯一标识数据元素的关键字。据元素均含有类型相同,可唯一标识数据元素的关键字。n数据关系数据关系R R:数据元素同属一个集合。数据元素同属一个集合。n基本操作基本操
14、作P P:InitDSTable(&DT)InitDSTable(&DT);操作结果:构造操作结果:构造个空的动态查找表个空的动态查找表DTDT。DestroyDSTable(&DT)DestroyDSTable(&DT);初始条件:动态查找表初始条件:动态查找表DT DT 存在。存在。操作结果:销毁动态查找表操作结果:销毁动态查找表DTDT。SearchDSTable(DT SearchDSTable(DT,key)key);初始条件:动态查找表初始条件:动态查找表DTDT存在,存在,keykey为和关键字类型相同的给定为和关键字类型相同的给定值。值。操作结果:若操作结果:若DTDT中存在关
15、键字等于中存在关键字等于keykey的数据元素,则函数值为的数据元素,则函数值为该元素值或在表中位置,否则为该元素值或在表中位置,否则为“空空”。南昌航空大学计算机学院南昌航空大学计算机学院/软件学院软件学院 12 12第第8 8章章 查找查找8.2 8.2 动态查找表动态查找表n抽象数据类型抽象数据类型动态查找表动态查找表的定义的定义InsertDSTable(&DTInsertDSTable(&DT,e)e);初始条件:动态查找表初始条件:动态查找表DTDT存在,存在,e e为待插入数据元素。为待插入数据元素。操作结果:若操作结果:若DTDT中不存在其关键字等于中不存在其关键字等于e.ke
16、ye.key的数据元素,则插入的数据元素,则插入e e到到DTDT。DeleteDSTable(&DTDeleteDSTable(&DT,key)key);初始条件:动态查找表初始条件:动态查找表DTDT存在,存在,keykey为和关键字类型相同的给定值。为和关键字类型相同的给定值。操作结果:若操作结果:若DTDT中存在其关键字等于中存在其关键字等于keykey的数据元素,则删除。的数据元素,则删除。TraverseDSTable(DTTraverseDSTable(DT,Visit()Visit();初始条件:动态查找表初始条件:动态查找表DTDT存在,存在,VisitVisit是对结点操作
17、的应用函数。是对结点操作的应用函数。操作结果:按某种次序对操作结果:按某种次序对DTDT的每个结点调用函数的每个结点调用函数Visit()Visit()一次且至一次且至多一次。一旦多一次。一旦visit()visit()败,则操作失败。败,则操作失败。ADT DynamicSearchTable ADT DynamicSearchTable南昌航空大学计算机学院南昌航空大学计算机学院/软件学院软件学院 13 13第第8 8章章 查找查找8.2 8.2 动态查找表动态查找表n存储结构存储结构n二叉链表二叉链表n主要内容主要内容n二叉排序树二叉排序树n二叉排序树的定义二叉排序树的定义n二叉排序树的
18、查找过程二叉排序树的查找过程n二叉排序树的插入二叉排序树的插入n二叉排序树的建立二叉排序树的建立n二叉排序树的删除二叉排序树的删除n二叉排序树的查找分析二叉排序树的查找分析n平衡的二叉排序树的定义平衡的二叉排序树的定义 lchild data rchildkey南昌航空大学计算机学院南昌航空大学计算机学院/软件学院软件学院 14 14第第8 8章章 查找查找8.2 8.2 动态查找表动态查找表二叉排序树二叉排序树n二叉排序树的定义:一种二叉排序树的定义:一种特殊结构的二叉树,或者特殊结构的二叉树,或者是一棵空树,或者是具有是一棵空树,或者是具有如下性质的二叉树:如下性质的二叉树:n若它的左子树
19、非空,则左子若它的左子树非空,则左子树上所有结点的值均小于根树上所有结点的值均小于根结点的值;结点的值;n若它的右子树非空,则右子若它的右子树非空,则右子树上所有结点的值均大于根树上所有结点的值均大于根结点的值;结点的值;n它的左右子树也分别为二叉它的左右子树也分别为二叉排序树。排序树。n中序遍历二叉排序树中序遍历二叉排序树n递增有序序列递增有序序列353515154545505040402525101020203030南昌航空大学计算机学院南昌航空大学计算机学院/软件学院软件学院 15 15第第8 8章章 查找查找8.2 8.2 动态查找表动态查找表二叉排序树二叉排序树n二叉排序树的查找二叉
20、排序树的查找与次优二叉树类似与次优二叉树类似n当二叉排序树不空时,首先将给定值和根结点的关键字当二叉排序树不空时,首先将给定值和根结点的关键字比较,若相等,则查找成功,否则将依据给定值和根结比较,若相等,则查找成功,否则将依据给定值和根结点的关键字之间的大小关系,分别在左子树或右子树上点的关键字之间的大小关系,分别在左子树或右子树上继续进行查找。继续进行查找。353515154545505040402525101020203030搜索搜索4545 搜索成功搜索成功 搜索搜索2828搜索失败搜索失败南昌航空大学计算机学院南昌航空大学计算机学院/软件学院软件学院 16 16第第8 8章章 查找查找
21、8.2 8.2 动态查找表动态查找表二叉排序树二叉排序树n二叉排序树查找的递归算法二叉排序树查找的递归算法nBiTreeSearchBST(BiTreeT,KeyTypekey)/在根指针在根指针T T所指二叉排序树中递归地查找某关键字等于所指二叉排序树中递归地查找某关键字等于keykey的数据元素的数据元素/若查找成功,则返回指向该数据元素结点的指针,否则返回空指针若查找成功,则返回指向该数据元素结点的指针,否则返回空指针if(!T)|EQ(key,T-data.key)return(T);/查找结束查找结束elseifLT(key,T-data.key)return(SearchBST(T
22、-lchild,key);/在左子树中继续查找在左子树中继续查找elsereturn(SearchBST(T-rchild,key);/在右子树中继续查找在右子树中继续查找/SearchBST南昌航空大学计算机学院南昌航空大学计算机学院/软件学院软件学院 17 17第第8 8章章 查找查找8.2 8.2 动态查找表动态查找表二叉排序树二叉排序树n二叉排序树查找的二叉排序树查找的非非递归算法递归算法nBiTreeNSearchBST(BiTreeT,KeyTypekey)/在根指针在根指针T T所指二叉排序树中非递归地查找某关键字等于所指二叉排序树中非递归地查找某关键字等于keykey的数据元素
23、的数据元素/若查找成功,则返回指向该数据元素结点的指针,否则返回空指针若查找成功,则返回指向该数据元素结点的指针,否则返回空指针p=T;/指针指针p指向根结点,搜索从根结点开始指向根结点,搜索从根结点开始while(p!=NULL&p-data.key!=key)if(keykey)p=p-lchild;elsep=p-rchild;return(p);/NSearchBST南昌航空大学计算机学院南昌航空大学计算机学院/软件学院软件学院 18 18第第8 8章章 查找查找8.2 8.2 动态查找表动态查找表二叉排序树二叉排序树n二叉排序树的插入二叉排序树的插入n二叉排序树的查找的特点二叉排序树
24、的查找的特点n动态树表查找动态树表查找n树的结构通常不是一次生成的,而是在查找过程中,当树中不树的结构通常不是一次生成的,而是在查找过程中,当树中不存在关键字等于给定值的结点时再进行插入。存在关键字等于给定值的结点时再进行插入。n新插入的结点一定是一个新添加的叶子结点,并且是查新插入的结点一定是一个新添加的叶子结点,并且是查找不成功时查找路径上访问的最后一个结点的左孩子或找不成功时查找路径上访问的最后一个结点的左孩子或右孩子结点。右孩子结点。n插入前必须要查找,以确定要插入的位置,因此必须修插入前必须要查找,以确定要插入的位置,因此必须修改二叉排序树的查找算法改二叉排序树的查找算法n查找不成功
25、时必须查找不成功时必须返回插入的位置返回插入的位置南昌航空大学计算机学院南昌航空大学计算机学院/软件学院软件学院 19 19第第8 8章章 查找查找8.2 8.2 动态查找表动态查找表二叉排序树二叉排序树n二叉排序树查找的递归算法二叉排序树查找的递归算法(查找不成功时返回插入的位置查找不成功时返回插入的位置)nStatus SearchBST(BiTree TStatus SearchBST(BiTree T,KeyType keyKeyType key,BiTree fBiTree f,BiTree&p)BiTree&p)/在根指针在根指针T T所指二叉排序树中递归地查找其关键字等于所指二叉
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 查找 DS chap
限制150内