【强烈推荐考研辅导最佳图书--------零基础学数据结构】第11章查找.ppt
《【强烈推荐考研辅导最佳图书--------零基础学数据结构】第11章查找.ppt》由会员分享,可在线阅读,更多相关《【强烈推荐考研辅导最佳图书--------零基础学数据结构】第11章查找.ppt(54页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【强烈推荐考研辅导最佳图书-零基础学数据结构】第11章查找11.1 11.1 查找的基本概念查找的基本概念在介绍有关查找的算法之前,先介绍与查找相关的基在介绍有关查找的算法之前,先介绍与查找相关的基本概念。本节主要介绍查找的基本概念及相关概念。本概念。本节主要介绍查找的基本概念及相关概念。关键字与主关键字:数据元素中某个数据项的值。如关键字与主关键字:数据元素中某个数据项的值。如果该关键字可以将所有的数据元素区别开来,也就是说可果该关键字可以将所有的数据元素区别开来,也就是说可以唯一标识一个数据元素,则该关键字被称为主关键字,以唯一标识一个数据元素,则该关键字被称为主关键字,否则被称为次关键字
2、。特别地,如果数据元素只有一个数否则被称为次关键字。特别地,如果数据元素只有一个数据项,则数据元素的值即是关键字。据项,则数据元素的值即是关键字。11.2.1 11.2.1 顺序表的查找顺序表的查找顺序表的存储结构用顺序表的存储结构用C语言描述如下。语言描述如下。#define MaxSize 100typedef struct KeyType key;DataType;typedef struct DataType listMaxSize;int length;SSTable;11.2.1 11.2.1 顺序表的查找顺序表的查找int SeqSearch(SSTable S,DataType
3、 x)/*在在顺顺序表中序表中查查找关找关键键字字为为x的元素,如果找到返回的元素,如果找到返回该该元素在表中的位置,否元素在表中的位置,否则则返回返回0*/int i=0;while(ix.key)/*从有序从有序顺顺序表的最后序表的最后一个元素开始向前比一个元素开始向前比较较*/i-;return i;11.2.1 11.2.1 顺序表的查找顺序表的查找假设表中有假设表中有n个元素且要查找的数据元素在数据元素个元素且要查找的数据元素在数据元素集合中出现的概率相等即为集合中出现的概率相等即为1/n,则有序顺序表在查找成功,则有序顺序表在查找成功时的平均查找长度为:时的平均查找长度为:即查找成
4、功时平均比较次数约为表长的一半。在查找即查找成功时平均比较次数约为表长的一半。在查找失败时,即要查找的元素没有在表中,则有序顺序表在查失败时,即要查找的元素没有在表中,则有序顺序表在查找失败时的平均查找长度为:找失败时的平均查找长度为:即查找失败时平均比较次数也同样约为表长的一半。即查找失败时平均比较次数也同样约为表长的一半。11.2.2 11.2.2 有序顺序表的查找有序顺序表的查找2折半查找折半查找11.2.2 11.2.2 有序顺序表的查找有序顺序表的查找int BinarySearch(SSTable S,DataType x)/*在有序在有序顺顺序表中折半序表中折半查查找关找关键键字
5、字为为x的元素,如果找到返回的元素,如果找到返回该该元素在表中的位元素在表中的位置,否置,否则则返回返回0*/int low,high,mid;low=0,high=S.length-1;/*设设置待置待查查找元素范找元素范围围的下界和上界的下界和上界*/while(low=high)mid=(low+high)/2;if(S.listmid.key=x.key)/*如果找到元素,如果找到元素,则则返回返回该该元素所在的位置元素所在的位置*/return mid+1;else if(S.listmid.keyx.key)/*如果如果mid所指示的元素大于关所指示的元素大于关键键字,字,则则修修
6、改改high指指针针*/high=mid-1;return 0;11.2.2 11.2.2 有序顺序表的查找有序顺序表的查找11.2.2 11.2.2 有序顺序表的查找有序顺序表的查找对于具有对于具有n个结点的有序表刚好能够构成一个深度为个结点的有序表刚好能够构成一个深度为h的满二叉树,则有的满二叉树,则有h=。二叉树中第。二叉树中第i层的结点个数层的结点个数是是2i-1,假设表中每个元素的查找概率相等,即,假设表中每个元素的查找概率相等,即 。则有。则有序表的折半查找成功时的平均查找长度为:序表的折半查找成功时的平均查找长度为:在查找失败时,即要查找的元素没有在表中,则有序在查找失败时,即要
7、查找的元素没有在表中,则有序顺序表的折半查找失败时的平均查找长度为:顺序表的折半查找失败时的平均查找长度为:11.2.3 11.2.3 索引顺序表的查找索引顺序表的查找索引顺序表的查找就是将顺序表分成几个单元,然后索引顺序表的查找就是将顺序表分成几个单元,然后为这几个单元建立一个索引,利用索引在其中一个单元中为这几个单元建立一个索引,利用索引在其中一个单元中进行查找。索引顺序表查找也称为分块查找,主要应用在进行查找。索引顺序表查找也称为分块查找,主要应用在表中存在大量的数据元素的时候,通过为顺序表建立索引表中存在大量的数据元素的时候,通过为顺序表建立索引和分块来提高查找的效率。和分块来提高查找
8、的效率。11.2.3 11.2.3 索引顺序表的查找索引顺序表的查找11.2.4 11.2.4 静态查找应用举例静态查找应用举例下面通过一个实例来说明静态查找的应用。下面通过一个实例来说明静态查找的应用。例例11_1 给定一组元素,利用顺序表查找、有序顺序表给定一组元素,利用顺序表查找、有序顺序表查找和索引顺序表查找值查找和索引顺序表查找值x的元素。的元素。1。顺序表的各种查找方式的实现。顺序表的各种查找方式的实现2。顺序表的各种查找方式的实现。顺序表的各种查找方式的实现11.3 11.3 动态查找动态查找动态查找是指在查找的过程中动态生成表结构,对于动态查找是指在查找的过程中动态生成表结构,
9、对于给定的关键字,如果表中存在则返回其位置,表示查找成给定的关键字,如果表中存在则返回其位置,表示查找成功,否则,插入该关键字的元素。动态查找包括二叉树和功,否则,插入该关键字的元素。动态查找包括二叉树和树结构两种类型的查找。本节的主要学习内容包括二叉排树结构两种类型的查找。本节的主要学习内容包括二叉排序树的查找、平衡二叉树的查找。序树的查找、平衡二叉树的查找。11.3.1 11.3.1 二叉排序树二叉排序树1二叉排序树的定义与查找二叉排序树的定义与查找typedef struct NodeDataType data;struct Node*lchild,*rchild;BiTreeNode,
10、*BiTree;11.3.1 11.3.1 二叉排序树二叉排序树11.3.1 11.3.1 二叉排序树二叉排序树BiTree BSTSearch(BiTree T,DataType x)/*二叉排序二叉排序树树的的查查找,如果找到元素找,如果找到元素x,则则返回指向返回指向结结点的指点的指针针,否,否则则返回返回NULL*/BiTreeNode*p;if(T!=NULL)/*如果二叉排序如果二叉排序树树不不为为空空*/p=T;while(p!=NULL)if(p-data.key=x.key)/*如果找到,如果找到,则则返回指向返回指向该结该结点的指点的指针针*/return p;else i
11、f(x.keydata.key)/*如果关如果关键键字小于字小于p指向的指向的结结点的点的值值,则则在在左子左子树树中中查查找找*/p=p-lchild;elsep=p-rchild;/*如果关如果关键键字大于字大于p指向的指向的结结点的点的值值,则则在右子在右子树树中中查查找找*/return NULL;11.3.1 11.3.1 二叉排序树二叉排序树2二叉排序树的插入操二叉排序树的插入操作作3二叉排序树的删除操二叉排序树的删除操作作11.3.1 11.3.1 二叉排序树二叉排序树4二叉排序树的应用举例二叉排序树的应用举例11.3.2 11.3.2 平衡二叉树平衡二叉树1平衡二叉树的定义平衡
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 强烈推荐考研辅导最佳图书-零基础学数据结构 【强烈推荐考研辅导最佳图书-零基础学数据结构】第11章 查找 强烈推荐 考研 辅导 最佳 图书 基础 数据结构 11
限制150内