查找(1)静态查找
- 格式:pdf
- 大小:396.49 KB
- 文档页数:25
查找1.查找表是由同一类型的数据元素(或记录)构成的集合2.对查找表的操作:查询某个“特定的”数据元素是否在查找表中;检索某个“特定的”数据元素的各种属性;在查找表中插入一个数据元素;从查找表中删去某个数据元素3.静态查找表:仅作查询和检索操作的查找表。
4.动态查找表:在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已存在的某个数据元素,此类表为动态查找表5.关键字:是数据元素(或记录)中某个数据项的值,用以标识(识别)一个数据元素(或记录)。
6.查找:根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素或(记录)。
7.平均查找长度ASL:为确定记录在表中的位置,需和给定值进行比较的关键字的个数的期望值叫查找算法的~8.顺序表的查找:从表的一端开始逐个进行记录的关键字和给定值的比较。
9.顺序表查找的平均查找长度为:ASL=(n+1)/2 。
顺序表的查找算法简单,但平均查找长度较大,不适用于表长较大的查找表。
10.折半查找:每次将待查记录所在区间缩小一半。
适用于采用顺序存储结构的有序表。
ASL=log2(n+1)--111.索引顺序查找:又称分块查找,将表分成几块,块内无序,块间有序;先确定待查记录所在块,再在块内查找。
适用于分块有序表12.动态查找表的特点:表结构本身是在查找过程中动态生成。
若表中存在其关键字等于给定值key的记录,表明查找成功;否则插入关键字等于key的记录。
13.二叉查找树:二叉排序树或者是一棵空树;或者是具有如下特性的二叉树:若它的左子树不空,则左子树上所有结点的值均小于根结点的值;若它的右子树不空,则右子树上所有结点的值均大于根结点的值;它的左、右子树也都分别是二叉排序树。
14.二叉排序树的查找算法:若二叉排序树为空,则查找不成功;否则1)若给定值等于根结点的关键字,则查找成功;2)若给定值小于根结点的关键字,则继续在左子树上进行查找;3)若给定值大于根结点的关键字,则继续在右子树上进行查找。
第九章查找一、选择题1•若查找每个记录的概率均等,则在具有n 个记录的连续顺序文件中采用顺序查找法查找一个记录,其平均查找长度ASL 为()。
A .(n-1)/2B.n/2C.(n+1)/2D.n 2. 下面关于二分查找的叙述正确的是()A. 表必须有序,表可以顺序方式存储,也可以链表方式存储C.表必须有序,而且只能从小到大排列B. 表必须有序且表中数据必须是整型,实型或字符型D.表必须有序,且表只 能以顺序方式存储3. 用二分(对半)查找表的元素的速度比用顺序法() A. 必然快B.必然慢C.相等D.不能确定4. 具有12个关键字的有序表,折半查找的平均查找长度()A.3.1B.4C.2.5D.55.当采用分块查找时,数据的组织方式为()A. 数据分成若干块,每块内数据有序B. 数据分成若干块,每块内数据不必有序,但块间必须有序,每块内最大(或最小)的数据组成索引块C. 数据分成若干块,每块内数据有序,每块内最大(或最小)的数据组成索引块D. 数据分成若干块,每块(除最后一块外)中数据个数需相同6. 二叉查找树的查找效率与二叉树的((1))有关,在((2))时其查找效率最低(1) :A.高度B.结点的多少C.树型D.结点的位置(2) :A.结点太多B.完全二叉树C.呈单枝树D.结点太复杂。
7. 对大小均为n 的有序表和无序表分别进行顺序查找,在等概率查找的情况下,对于查找失败,它们的平均查找长度是((1)),对于查找成功,他们的平均查找长度是((2))供选择的答案:A.相同的B.不同的9.分别以下列序列构造二叉排序树,与用其它三个序列所构造的结果不同的是()A .(100,80,90,60,120,110,130)B.(100,120,110,130,80,60,90) C. (100,60,80,90,120,110,130)D.(100,80,60,90,120,130,110)10. 在平衡二叉树中插入一个结点后造成了不平衡,设最低的不平衡结点为A,并已知A 的左孩子的平衡因子为0右孩子的平衡因子为1,则应作()型调整以使其平衡。
数据结构(三⼗七)查找的基本概念 ⼀、查找的基本概念 1.查找(Searching):就是在由⼀组记录组成的集合中寻找关键字值等于给定值的某个记录,或是寻找属性值符合特定条件的某些记录。
若表中存在这样⼀个记录,则称查找是成功的,此时查找的结果给出整个记录的信息,或指⽰该记录在查找表中的位置。
若表中不存在关键字等于给定值的记录,则称查找不成功,此时查找的结果可以给出⼀个“空”记录或者“空”指针。
2.查找表(Search Table):是⼀种以同⼀类型的记录构成的集合为逻辑结构,以查找为核⼼运算的数据结构。
3.关键字(Key):是数据元素中某个数据项的值,⼜称为键值,⽤它可以标识⼀个数据元素,也可以标识⼀个记录的某个数据项(字段)。
4.主关键字(Primaty Key):可以惟⼀地标识⼀个记录的关键字。
对于那些可以标识多个数据元素(或记录)的关键字,称为次关键字(Secondary Key)。
⼆、查找表的分类 1.静态查找表(Static Search Table):只作查找操作的查找表。
主要操作有:查询某个“特定的”数据元素是否在查找表中检索某个“特定的”数据元素和各种属性。
2.动态查找表(Dynamic Search Table):动态表的特点是表结构本⾝是在查找过程中动态⽣成的。
同时在查找过程中同时插⼊查找表中不存在的数据元素,或者从查找表中删除已经存在的某个数据元素。
主要操作有:查找时插⼊数据元素查找时删除数据元素 三、静态表和动态表的代表 静态表:顺序查找、⼆分查找、插值查找、斐波那契查找、线性索引查找 动态表:⼆叉排序树、平衡⼆叉树、B树、散列表。
数据结构中的查找算法总结静态查找是数据集合稳定不需要添加删除元素的查找包括:1. 顺序查找2. 折半查找3. Fibonacci4. 分块查找静态查找可以⽤线性表结构组织数据,这样可以使⽤顺序查找算法,再对关键字进⾏排序就可以使⽤折半查找或斐波那契查找等算法提⾼查找效率,平均查找长度:折半查找最⼩,分块次之,顺序查找最⼤。
顺序查找对有序⽆序表均适⽤,折半查找适⽤于有序表,分块查找要求表中元素是块与块之间的记录按关键字有序动态查找是数据集合需要添加删除元素的查找包括: 1. ⼆叉排序树 2. 平衡⼆叉树 3. 散列表 顺序查找适合于存储结构为顺序存储或链接存储的线性表。
顺序查找属于⽆序查找算法。
从数据结构线形表的⼀端开始,顺序扫描,依次将扫描到的结点关键字与给定值k相⽐较,若相等则表⽰查找成功 查找成功时的平均查找长度为: ASL = 1/n(1+2+3+…+n) = (n+1)/2 ; 顺序查找的时间复杂度为O(n)。
元素必须是有序的,如果是⽆序的则要先进⾏排序操作。
⼆分查找即折半查找,属于有序查找算法。
⽤给定值value与中间结点mid的关键字⽐较,若相等则查找成功;若不相等,再根据value 与该中间结点关键字的⽐较结果确定下⼀步查找的⼦表 将数组的查找过程绘制成⼀棵⼆叉树排序树,如果查找的关键字不是中间记录的话,折半查找等于是把静态有序查找表分成了两棵⼦树,即查找结果只需要找其中的⼀半数据记录即可,等于⼯作量少了⼀半,然后继续折半查找,效率⾼。
根据⼆叉树的性质,具有n个结点的完全⼆叉树的深度为[log2n]+1。
尽管折半查找判定⼆叉树并不是完全⼆叉树,但同样相同的推导可以得出,最坏情况是查找到关键字或查找失败的次数为[log2n]+1,最好的情况是1次。
时间复杂度为O(log2n); 折半计算mid的公式 mid = (low+high)/2;if(a[mid]==value)return mid;if(a[mid]>value)high = mid-1;if(a[mid]<value)low = mid+1; 折半查找判定数中的结点都是查找成功的情况,将每个结点的空指针指向⼀个实际上不存在的结点——外结点,所有外界点都是查找不成功的情况,如图所⽰。