数据结构(c语言版)第8章 查找(5.26)

合集下载

数据结构课件第八章查找优秀课件

数据结构课件第八章查找优秀课件

low
mid
high
1 2 3 4 5 6 7 8 9 10 11
5 13 19 21 37 56 64 75 80 88 92
low mid high 1 2 3 4 5 6 7 8 9 10 11 5 13 19 21 37 56 64 75 80 88 92
查找第i个元素: n+1-i
查找失败:
n+1
iii 比较次数=5
顺序查找方法的ASL
n
对含 n个 有记录的 AS表 L , pici i1
设表中每个元 概素 率的 相 pi查 等 1n找
n
则AS L
i1
pici
1 n i ni1
1n(n1) n2
n1 2
7.2.2 折半查找
1. 折半查找的基本思想 折半查找要求查找表用顺序存储结构存放且各数 据元素按关键字有序(升序或降序)排列,也就是说 折半查找只适用于对有序顺序表进行查找。
查找——也叫检索,是根据给定的某个值,在表中确定一 个关键字等于给定值的记录或数据元素
关键字——是数据元素中某个数据项的值,它可以标识一 个数据元素
查找方法评价
查找速度
占用存储空间多少
算法本身复杂程度
平均查找长度ASL(Average Search Length):为确定记 录在表中的位置,需和给定值进行比较的关键字的个 数的期望值叫查找算法的~
7.2 静态查找
正如本章第一节所述:静态查找是指在静态查找 表上进行的查找操作,在查找表中查找满足条件的数 据元素的存储位置或各种属性。本节将讨论以线性结 构表示的静态查找表及相应的查找算法。
7.2.1 顺序查找
1. 顺序查找的基本思想

数据结构 第8章 查找

数据结构 第8章 查找

2
5
8
11
注:判定树的形态只与表记录个数n有关,与记录的内容无关。
2013-7-28
int BinSearch(JD r[],int n,KeyType k) { int low,high,mid,found; low=1; high=n; found=0; while ((low<=high) && (found==0)) { mid=(low+high)/2; if(k>r[mid].key) low=mid+1; else if(k<r[mid].key) high=mid-1; else found=1; } if(found==1) return(mid); else return(0); }
2013-7-28
– 插入算法
例 {10, 18, 3, 8, 12, 2, 7, 3}
10
10
10
10
10
18
3
18
3 8
18
3
18
8 12
10 3 2 18 8 12 2 7 3
10 18 8 12 2 7 3 3
10 18 8 12
中序遍历二叉排序树可得到一个关键字的有序序列
2013-7-28
A[3]
A[6]
A[9]
A[12]
A[14]
A[17]
A[20]
A[4]
A[7]
A[10]
A[15]
A[18]
A[21]
2013-7-28
int BinSearch(JD r[], int low, int high, KeyType k) { int mid; if (low>hith) return -1; else { mid=(low+high)/2; if (k==r[mid].key) return mid; else if (k>r[mid].key) return (BinSearch(r,mid+1,high,k)); else return (BinSearch(r,low,mid-1,k)); } }

C语言数据结构:查找

C语言数据结构:查找
➢ 8.1 基本概念与术语 ➢ 8.2 静态查找表 ➢ 8.3 动态查找表 ➢ 8.4 哈希表查找 ➢ 8.5 小结与习题
2020年8月20日
1
本章主要内容
• 本章主要学习静态查找和动态查找方法。静态查
找包括顺序查找、二分查找和分块索引查找等, 动态查找包括二叉排序树、B树等。作为重点内 容本章还介绍了哈希查找及相关知识。
主关键字将能唯一确定一个数据元素(或记录) 的关键字。
查找表是由具有相同类型的数据元素(或记录) 组成的集合。分为静态查找表和动态查找表两大类。
如果查找表中能够找到满足条件的记录,称为查 找成功,否则称为查找不成功。
2020年8月20日
3
静态查找表:在对查找表进行操作时,不改变 表的结构,只进行查找操作;
找成功时
n
ASL= ∑ Pi*Ci
i=1
Pi为表中第i个数据元素的查找概率,Ci为表中
第i个数据元素的关键字与给定值x相等时,需要比较
的次数。
设查找表长度为n,查找元素x和表中第i个元素关
键字相等时,需要比较的次数为n-i+1,则平均查找
长度为:
n ASL= ∑ Pi*(n-i+1)
i=1
2020年8月20日
6 13 17 20 24 28 30 36 39 44 48 51 55
第一次 low=1
mቤተ መጻሕፍቲ ባይዱd=7
high=13
因x>30,下一步继续在右半区查找,即:
0 1 2 3 4 5 6 7 8 9 10 11 12 13
6 13 17 20 24 28 30 36 39 44 48 51 55
例在给定的序列A={6,13,17,20,24,28, 30,36,39,44,48,51,55}中查找给定值13和52 这两个数据。

数据结构第8章查找

数据结构第8章查找

动态查找表
1 二叉排序树和平衡二叉树 二叉排序树或者是一颗空树,或者是具 有如下性质的二叉树: (1)若它的左子树非空,则左子树上所有 结点的值均小于根结点的值; (2)若它的右子树非空,则右子树上所有 结点的值均大于根结点的值; (3)其左右子树也是一颗二叉排序树。
43
33
37 37 51 43 33 41 67 40 67
int SearchBin(Seqlist S ,KeyType t) { int mid,low=0,high=S.size-1; while(low<=high) { mid=(low+high)/2; if(t.key==S.list[mid].key) return mid; else if(t.key>S.list[mid].key) low=mid+1; else high=mid-1; } return -1; }
1 43
2
23
37
1
51
1
20
1
30
1
41
1
49
1
67
B-树上的结点可以含有m-1个关键字和m 个指针,查找过程:将数据元素关键字 和跟结点的若干个关键字逐个进行比较, 如果相等,则查找成功返回;否则,将 沿着指针继续查找下层结点。
B-树的生成从空树开始,逐个插入关键 字得到。 根据B-树的特点,其关键字的个数必须 至少为m /2-1,但又不能超过m-1。 每次插入时总是根据其大小在最底层某 个叶子结点上添加一个关键字,如果该 结点的关键字个数小于m-1,则直接插 入,如果发现新插入关键字后,关键字 总数超过m-1,则该结点必须分裂 。
二叉排序树的插入过程: 若二叉排序树非空,先将给定关键字和 根结点关键字进行比较,如果相等,则 停止插入操作并返回;否则,如果小于 根结点关键字,则在左子树上搜得合适 位置插入该元素;如果大于根结点关键 字,则在右子树上搜得合适位置插入该 元素。

(完整word版)数据结构(c语言版)课后习题答案完整版资料

(完整word版)数据结构(c语言版)课后习题答案完整版资料

第1章绪论5.选择题:CCBDCA6.试分析下面各程序段的时间复杂度。

(1)O(1)(2)O(m*n)(3)O(n2)(4)O(log3n)(5)因为x++共执行了n—1+n—2+……+1= n(n—1)/2,所以执行时间为O(n2)(6)O(n)第2章线性表1.选择题babadbcabdcddac2.算法设计题(6)设计一个算法,通过一趟遍历在单链表中确定值最大的结点。

ElemType Max (LinkList L ){if(L—〉next==NULL) return NULL;pmax=L-〉next;//假定第一个结点中数据具有最大值p=L-〉next—>next;while(p != NULL ){//如果下一个结点存在if(p->data > pmax—>data) pmax=p;p=p->next;}return pmax-〉data;(7)设计一个算法,通过遍历一趟,将链表中所有结点的链接方向逆转,仍利用原表的存储空间.void inverse(LinkList &L) {// 逆置带头结点的单链表Lp=L-〉next;L->next=NULL;while (p){q=p—>next;// q指向*p的后继p->next=L—>next;L—>next=p; // *p插入在头结点之后p = q;}}(10)已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为item的数据元素.[题目分析]在顺序存储的线性表上删除元素,通常要涉及到一系列元素的移动(删第i个元素,第i+1至第n个元素要依次前移)。

本题要求删除线性表中所有值为item的数据元素,并未要求元素间的相对位置不变。

因此可以考虑设头尾两个指针(i=1,j=n),从两端向中间移动,凡遇到值item的数据元素时,直接将右端元素左移至值为item的数据元素位置。

数据结构授课教案-第8章查找

数据结构授课教案-第8章查找
return mid;
elseif(kx<tbl.elem[mid].key)
low=mid+1;
else
high=mid-1;
}
return 0;
}
【性能分析】
折半查找过程可用一棵判定树来描述。判定树中每一结点对应表中一个记录,但结点值不是记录的关键字,而是记录在表中的位置序号。根结点对应当前区间的中间记录,左子树对应前一子表,右子树对应后一子表。


折半查找的算法和分析;二叉排序树的插入和删除;平衡二叉树的平衡化方法;B-树的插入和删除方法;哈希表的构造方法。
作业布置
习题9
参考书
1.数据结构题集(C语言版),严蔚敏,清华大学出版社,2002。
3. 数据结构、算法与应用-C++语言描述,(美)SartajSahni著,汪诗林等译,机械工业出版社,2002。
本章以后讨论中,涉及的关键码类型和数据元素类型统一说明如下:
typedefstruct{
KeyTypekey;/*关键码字段,可以是整型、字符型、构造型等*/
……/*其它字段*/
}ElemType;
9.2静态查找表
9.2.1静态查找表结构
静态查找表是数据元素的线性表,可以是基于数组的顺序存储或以线性链表存储。
二叉排序树(查找表)的类型定义:
typedefintKeyType;//设关键字的类型可直接进行比较
typedefstructnode {
KeyTypekey ; /*关键字的值*/
……/*其它字段的值*/
structnode*lchild,*rchild;/*左右指针*/
}BitNode,*BiTree;

数据结构-查找

数据结构-查找
数据结构
查找
定义
查找是对数据进行处理时经常用到的一种操作。查找是指在 一个数据元素集合中查找出关键字等于某个给点关键字的数据 元素。
应用背景
主要应用于数据处理方面或计算机系统之中,如一般的数据查 找、操作系统的文件查找、应用软件的文字查找(例如,word 、excel等)、数据库系统的查找等。
键树
键树可以用来处理字符串,它是一个多叉树,树中的每一个 结点并不代表一个关键字或元素,而只是代表字符串中的一个 字符。以下面字符串为例,
{a, and, are, be, but, for, from, had, have, her, here}
哈希表
如果能在数据元素的存储位置和其关键字之间建立一个确 定的对应关系h,把具有关键字key的数据元素存储在h(key) 处,那么在查找时,只要集合中存在关键字和key相等的数据 元素,则一定在h(key)的匀称的二叉排序树。其任意结点的左、右子 树的高度大致相同,平衡二叉树的严格定义是平衡二叉树或者 是空树,或者是任何结点的左子树和右子树高度相差最多为1 的二叉树。
平衡二叉树
AVL树
每当插入一个结点时,首先检查是否因插入而破坏了树 的平衡性,如果是,则找出其中最小不平衡子树,在保持 排序树特性的同时,调整最小不平衡子树各结点之间的连 接关系,以达到新的平衡。调整子树的四种方式。 LL型调整
静态查找表
顺序表的查找
从表的一端开始扫描线性表,依次将扫描到的数据元素 和给定的关键字比较,若相等,则查找成功;若直到扫描 结束仍未找到,则查找失败。
有序表的查找
在一个循环过程中,将查找区间中心位置上的数据元素 和给定关键字进行比较,若两者相等,则查找成功;否则 如果前者大于给定关键字,则将查找区域改变成原查找区 的前半段,否则改为原查找区的后半段,然后继续这个过 程,一直持续到查找区间的上界小于查找区间的下界为止。

数据结构C语言版(第2版)严蔚敏人民邮电出版社课后习题答案

数据结构C语言版(第2版)严蔚敏人民邮电出版社课后习题答案

数据结构( C语言版)(第 2版)课后习题答案李冬梅2015.3目录第 1 章绪论 (1)第 2 章线性表 (5)第 3 章栈和队列 (13)第 4 章串、数组和广义表 (26)第 5 章树和二叉树 (33)第 6 章图 (43)第 7 章查找 (54)第 8 章排序 (65)第1章绪论1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。

答案:数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。

如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。

数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。

在有些情况下,数据元素也称为元素、结点、记录等。

数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。

数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。

例如,学生基本信息表中的学号、姓名、性别等都是数据项。

数据对象:是性质相同的数据元素的集合,是数据的一个子集。

例如:整数数据对象是集合N={0 ,± 1,± 2,, } ,字母字符数据对象是集合C={‘A’,‘B’, , ,‘Z’,‘ a’,‘ b’, , ,‘z ’} ,学生基本信息表也可是一个数据对象。

数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。

换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。

逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。

因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。

存储结构:数据对象在计算机中的存储表示,也称为物理结构。

抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。

具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。

数据结构(C语言版)教学指导:第8章 查找的分析与应用

数据结构(C语言版)教学指导:第8章 查找的分析与应用
散列函数中的除留余数法
教学难点
线性表的二分查找方法
二叉排序树的删除方法
散列函数中解决冲突的方法,包括开放地址法和拉链法
教学计划
教材章节
学习内容
课时分配
第8章8.1∽8.2
全部微课
微课8-1 查找的概念
学生自主
提前预习
微课8-2 顺序查找
微课8-3 二分法查找
微课8-4 分块查找
第8章8.1∽8.2
查找的基本概念
第8章8.4
全部微课
微课8-9 散列表的概念
学生自主
提前预习
微课8-10 散列函数的构造方法
微课8-11 散列技术开放定址解决冲突法
微课8-12 散的概念
2课时
散列函数的构造方法:除留余数法
散列函数处理冲突的方法,包括开放地址法和拉链法
备注
除软件技术专业以外,散列技术的相关知识可以选讲
2课时
线性表的顺序查找方法
线性表的二分查找方法
线性表的分块查找方法
第8章8.3
全部微课
微课8-5 二叉排序树的定义
学生自主
提前预习
微课8-6 二叉排序树的建立
微课8-7 二叉排序树的删除
微课8-8 二叉排序树的查找
第8章8.3
二叉排序树的定义
2课时
二叉排序树的插入和生成
二叉排序树的删除
二叉排序树的查找
理论课时
6课时
实践课时
2课时
教学方法
引导启发法、实例演示法
教学目标
了解查找的基本概念
熟练掌握线性表的顺序查找和二分查找方法
了解线性表的分块查找方法
掌握二叉排序树的定义、生成和删除方法

数据结构chapter 8 查找.ppt

数据结构chapter 8 查找.ppt

21-Jan-20
20
二叉判定树
折半查找过程可以用一棵二叉树来表示。 树中的每个结点表示查找表中的一个记录 结点的值表示该记录在查找表中的位置 通常情况下称这个描述查找过程的二叉树为二叉判定树。
6
3 1
2
4 5
9 7
8
10 11
21-Jan-20
21
二叉判定树分析(查找成功)
由二叉判定树可见,成功查找结点的过程就是从根结点到树中某 个结点的路径,比较的次数是该结点在二叉判定树上的层次。
折半查找法在查找不成功时和给定值进行比较的次数最多为
log
n 2


1
6
3
9
1
4
7
10
-1
2
3-4
5
6-7
8
9-10
11
1-2
2-3
4-5
5-6
7-8
8-9
10-11
11-
21-Jan-20
23
折半查找的平均查找长度
假定有序表的长度为 n,n=2h-1,h为树的最大深度
由于第j层上的节点数目为 2j-1,这些节点只需要比较j 次
动态查找表的突出特征在于:表的内容本身就是在查 找过程中动态生成的。
对于给定的值key,如果在表中存在关键字等于key记 录,则查找成功,否则就插入关键字等于key的记录。
21-Jan-20
21-Jan-20
4
如何进行查找?
查找过程依赖于数据元素在查找表中的位置。 具体采用什么样的查找方法完全取决于查找表中数据
元素是根据何种关系来组织的。
21-Jan-20
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
点在判定树上的层次数。因此,折半查找成功时,关键字比较 次数最多不超过判定树的深度。 n个结点的判定树的深度与n个结点的完全二叉树的深度相等, 均为[log2n]+1。
第9章 查 找
折半查找成功时,关键字比较次数最多不超过判定树的深
度。 为便于讨论,假定表的长度n=2h-1,则相应判定树必为深度 是h的满二叉树,h=log2(n+1)。又假设每个记录的查找概率相 等,
图8.2 分块查找法示意
第9章 查 找 分块查找的基本过程如下: (1) 首先,将待查关键字K与索引表中的关键字进行比较,
以确定待查记录所在的块。具体的可用顺序查找法或折半查
找法进行。 (2) 进一步用顺序查找法,在相应块内查找关键字为 K的 元素。 例如,在上述索引顺序表中查找 36 。首先将 36 与索引表
}BiTNode, *BiTree;
第9章 查 找
1. 二叉搜索树的查找操作:Find
查找从根结点开始,如果树为空,返回NULL 若搜索树非空,则根结点关键字和X进行比较,并进行不
同处理:
若X小于根结点键值,只需在左子树中继续搜索; 如果X大于根结点的键值,在右子树中进行继续搜索;
若两者比较结果是相等,搜索完成,返回指向此结点的
指针。
第9章 查 找
BiTree Find(TElemType X, BiTree BST ) {
if( !BST ) return NULL; /*查找失败*/ if( X > BST->data )
return Find( X, BST->rchild ); /*在右子树继续查找*/
else if( X < BST->data )
(n+1) = 3/4(n+1)
若查找概率不等时,将概率高的放在最后,即按概率递增
的顺序存放,可提高查找效率。但实际上记录的查找概率无法 预测,可通过设一个访问频度域来解决该问题。
第9章 查 找
8.1.2 有序表的查找
折半查找法又称为二分法查找法,这种方法要求待查找的
列表必须是按关键字大小有序排列的顺序表。其基本过程是:
(3)它的左右子树也分别为二叉排序树。
二叉排序树又称二叉查找树。
第9章 查 找
5 2 1 3 4 7 6 8 9
CHEN
CAO
ZHAO DING
WANG
(a) 二叉排序树示例1
(b) 二叉排序树示例2 (根据字符ASCⅡ码的大小)
图8.3 二叉排序树
第9章 查 找 查找过程:当二叉排序树不空时,首先将给定值和根 结点的关键字比较,若相等,则查找成功。否则将依据给
第9章 查 找 查找:根据给定的关键字值,在特定的列表中确定一个其 关键字与给定值相同的数据元素,并返回该数据元素在列表中 的位置。查找可能成功或失败。
查找算法中涉及到三类参量:
① 查找对象K(找什么);
② 查找范围L(在哪找);
③ K在L中的位置(查找的结果)。
第9章 查 找
查找的操作: 1、查某个数据元素是否存在。2、检索某
return Find( X, BST->lchild); /*在左子树中继续查找*/
else /* X == BST->data */ return BST; /*查找成功,返回找到结点的地址*/ }
第9章 查 找 由于非递归函数的执行效率高,可将“尾递归”函数改为迭 代函数 。 BiTree Find(TElemType X, BiTree BST ) { while( BST ) { if( X > BST->data ) BST = BST->rchild; /*向右子树中移动,继续查找*/ else if( X < BST->data ) BST = BST->lchild; /*向左子树中移动,继续查找*/ else /* X == BST->data */ return BST; /*查找成功,返回结点的找到结点的地址*/ } return NULL; /*查找失败*/ } 查找的效率决定于树的高度
LB log2 (b 1) 1
s 1 n s ASLbs log2 (b 1) 1 log2 1 2 s 2
第9章 查 找
8.2 动态查找表
8.2.1二叉排序树和平衡二叉树 二叉排序树或者是一棵空树,或者是具有如下性质的二叉 树: (1)若它的左子树非空,则左子树上所有结点的值均小于 根结点的值; (2)若它的右子树非空,则右子树上所有结点的值均大于 根结点的值;
ST.elem[0]起监视哨。当ST.length>=1000时,平均时间减少一半。
第9章 查 找
下面用平均查找长度来分析一下顺序查找算法的性能。假
设列表长度为n,那么查找第i个数据元素时需进行n-i+1次比较, 即 Ci=n-i+1 。又假设查找每个数据元素的概率相等,即 Pi=1/n , 则顺序查找算法的平均查找长度为:
定待查元素所在的块,则有
s 1 b b 1 s 1 LB j , LW i b j 1 2 2 i 1
第9章 查 找
bs ASLbs LB LW 1 2 n 将 b 代入, 得 s
1n bs s 1 2 s
若用折半查找法确定待查元素所在的块,则有
1 n 1 n 1 ASL PiCi Ci (n i 1) (n 1) n i 1 n i 1 2 i 1
考虑到查找不成功的情况,不成功比较n+1次,设查找成功 和不成功概率相同,则Pi = 1/2n;
n
ASLss= (1/2n)*
(n-i+1)+ (1/2n)*
n
其中Pi为查找列表中第i个数据元素的概率,Ci为找到列表中第 i 个数据元素时,已经进行过的关键字比较次数。由于查找算 法的基本运算是关键字之间的比较操作,所以可用平均查找长 度来衡量查找算法的性能。
第9章 查 找
8.1 静态查找表
8.1.1
顺序查找法的特点是,用所给关键字与线性表中各元素的 关键字逐个比较,直到成功或失败。存储结构通常为顺序结构, 也可为链式结构。 下面给出顺序结构有关数据类型的定义: typedef struct{ ElemType *elem; int length;
的某个元素。
第9章 查 找 平均查找长度:为确定数据元素在列表中的位置,需和给 定值进行比较的关键字个数的期望值,称为查找算法在查找成
功时的平均查找长度。对于长度为 n 的列表,查找成功时的平
均查找长度为:
ASL P 1C1 P 2C2 P nCn P i Ci
i 1
定值和根结点的关键字之间的大小关系,分别在左子树或
右子树上进行查找。 在下面讨论的二叉排序树的操作中,使用二叉链表作 为存储结构,其结点结构说明如下: typedef struct BiTNode{
TElemType data ; /*关键字的值*/
struct BiTNode *lchild, *rchild; /*左右指针*/
图8.1 折半查找示意图
第9章 查 找 折半查找的算法如下: int Search_Bin(SSTable ST, KeyType key)
/* 在有序表 ST中折半查找其关键字等于 key的元素,若找到,则函数值为该 元素在表中的位置*/
{ low = 1 ; high = ST.length; /*置区间初值*/ while ( low <= high) { mid=(low+high) / 2; if (EQ(key,ST.elem[mid].key)) return mid; /*查找成功*/ else if (LT(key,ST.elem[mid]. key) high=mid-1; /*未找到, 则继续在前半区间进行查找*/ else low=mid+1; /*继续在后半区间进行查找*/
中的关键字进行比较,因为25<36≤58,所以36在第二个块中,
进一步在第二个块中顺序查找,最后在8号单元中找到36。
第9章 查 找 分块查找的平均查找长度由两部分构成,即查找索引表时 的平均查找长度为LB,以及在相应块内进行顺序查找的平均查 找长度为LW。 ASLbs=LB+LW 假定将长度为n的表分成b块,且每块含s个元素,则b=n/s。 又假定表中每个元素的查找概率相等,则每个索引项的查找概 率为 1/b,块中每个元素的查找概率为 1/s 。若用顺序查找法确
第9章 查 找
第8章 查找
8.1 静态查找表
8.2 动态查找表
8.3 哈希表
第9章 查 找
查找表:由同一类型的数据元素(或记录)构成的集合, 可利用任意数据结构实现。松散的关系。 关键字:数据元素的某个数据项的值,用它可以标识列表 中的一个或一组数据元素。如果一个关键字可以唯一标识列表 中的一个数据元素,则称其为主关键字,否则为次关键字。
个特定数据元素的属性。3、在查找表中插入一个数据元素。 4、从查找表中删除某个数据元素。
查找的基本方法可以分为两大类,即比较式查找法和计
算式查找法。其中比较式查找法又可以分为静态查找表和动 态查找表,而计算式查找法也称为HASH(哈希)查找法。 静态查找表:只作前两种操作。 动态查找表:查找过程中同时插入不存在或删除已存在
} return 0;
}
第9章 查 找 折半查找过程可用一个称为判定树的二叉树描述,判定树 中每一结点对应表中一个记录,结点值对应记录在表中的位置。
根结点对应当前查找区间的中间记录,左子树对应前一子表,
右子树对应后一子表。 显然,找到有序表中任一记录的过程,对应判定树中从根结
相关文档
最新文档