顺序查找、折半查找和分块查找算法的适用范围

顺序查找、折半查找和分块查找算法的适用范围

1.顺序查找适用范围:

(1)数据量比较小的线性表;

(2)对线性表的操作进行频繁的情况,如链表或数组中删除、插入操作;

(3)线性表中元素无序排列的情况。

2.折半查找适用范围:

(1)线性表有序排列;

(2)查找频繁,但不需要频繁插入和删除操作;

(3)数据量较大,相对于顺序查找来说,提高了查找的速度。

3.分块查找适用范围:

(1)线性表较大,有序排列;

(2)查找频繁,但不需要频繁插入和删除操作;

(3)对于线性表中分布均匀的元素进行查找。

数据结构答案 第9章 查找学习与指导

第9章 查找 9.1 知识点分析 1. 基本概念 (1)查找表 由同一类型的数据元素(或记录)构成的集合称为查找表。 (2)静态查找 在查找过程中仅查找某个特定元素是否存在或它的属性的,称为静态查找。 (3)动态查找 在查找过程中对查找表进行插入元素或删除元素操作的,称为动态查找。 (4)关键字 关键字是数据元素(或记录)中某个数据项的值,用它可以标识数据元素(或记录)。关键字分主关键字(唯一地标识一个记录的关键字)和次关键字(标识若干个记录的关键字)。 (5)查找 在查找表中确定是否存在一个数据元素的关键字等于给定值的操作,称为查找(也称为检索)。 (6)内查找、外查找 整个查找过程全部在内存进行,则称为内查找;若在查找过程中还需要访问外存,则称为外查找。 (7)平均查找长度ASL 查找成功时平均查找长度: 其中:P i 为找到表中第i 个数据元素的概率,且有: C i 为查找表中第i 个数据元素所用到的比较次数。不同的查找方法有不同的C i 。 2.顺序查找 顺序查找又称线性查找,是最基本的查找方法之一。顺序查找既适用于顺序表,也适用于链表。顺序查找的基本思想:从表的一端开始,顺序扫描线性表,依次按给定值kx 与关键字(Key )进行比较,若相等,则查找成功,并给出数据元素在表中的位置;若整个表查找完毕,仍未找到与kx 相同的关键字,则查找失败,给出失败信息。 3.二分查找 二分查找也叫折半查找,是一种效率较高的查找方法,但前提是表中元素必须按关键字有序(按关键字递增或递减)排列。二分查找的基本思想:在有序表中,取中间元素作为比较对象,若给定值与中间元素的关键字相等,则查找成功;若给定值小于中间元素的关键字,则在中间元素的左半区继续查找;若给定值大于中间元素的关键字,则在中间元素的右半区继续查找。不断重复上述查找过程,直到查找成功,或所查找的区域无数据元素,查找失败。 4.分块查找 将具有n 个元素的主表分成m 个块(也称为子表),每块内的元素可以无序,但要求块 ∑ =?=n i i i C P ASL 1 11 =∑ =n i i P

数据结构——查找,顺序查找,折半查找

实验五查找的应用 一、实验目的: 1、掌握各种查找方法及适用场合,并能在解决实际问题时灵活应用。 2、增强上机编程调试能力。 二、问题描述 1.分别利用顺序查找和折半查找方法完成查找。 有序表(3,4,5,7,24,30,42,54,63,72,87,95) 输入示例: 请输入查找元素:52 输出示例: 顺序查找: 第一次比较元素95 第二次比较元素87 …….. 查找成功,i=**/查找失败 折半查找: 第一次比较元素30 第二次比较元素63 ….. 2.利用序列(12,7,17,11,16,2,13,9,21,4)建立二叉排序树,并完成指定元素的查 询。 输入输出示例同题1的要求。 三、数据结构设计(选用的数据逻辑结构和存储结构实现形式说明) (1)逻辑结构设计 顺序查找和折半查找采用线性表的结构,二叉排序树的查找则是建立一棵二叉树,采用的非线性逻辑结构。 (2)存储结构设计 采用顺序存储的结构,开辟一块空间用于存放元素。

(3)存储结构形式说明 分别建立查找关键字,顺序表数据和二叉树数据的结构体进行存储数据 四、算法设计 (1)算法列表(说明各个函数的名称,作用,完成什么操作) 序号 名称 函数表示符 操作说明 1 顺序查找 Search_Seq 在顺序表中顺序查找关键字的数据元素 2 折半查找 Search_Bin 在顺序表中折半查找关键字的数据元素 3 初始化 Init 对顺序表进行初始化,并输入元素 4 树初始化 CreateBST 创建一棵二叉排序树 5 插入 InsertBST 将输入元素插入到二叉排序树中 6 查找 SearchBST 在根指针所指二叉排序树中递归查找关键字 数据元素 (2)各函数间调用关系(画出函数之间调用关系) typedef struct { ElemType *R; int length; }SSTable; typedef struct BSTNode{ Elem data; //结点数据域 BSTNode *lchild,*rchild; //左右孩子指针 }BSTNode,*BSTree; typedef struct Elem{ int key; }Elem; typedef struct { int key;//关键字域 }ElemType;

数据结构 判断题

《数据结构》习题库之三:判断题 1. 程序就是算法,但算法不一定是程序。() 2. 线性表只能采用顺序存储结构或者链式存储结构。() 3. 线性表的链式存储结构是通过指针来间接反映数据元素之间逻辑关系的。() 4. 除插入和删除操作外,数组的主要操作还有存取、修改、检索和排序等。() 5. 稀疏矩阵中0元素的分布有规律,因此可以采用三元组方法进行压缩存储。() 6. 不管堆栈采用何种存储结构,只要堆栈不空,可以任意删除一个元素。() 7. 确定串T在串S中首次出现的位置的操作称为串的模式匹配。() 8. 深度为h的非空二叉树的第i层最多有2i-1 个结点。() 9. 满二叉树就是完全二叉树。() 10. 已知一棵二叉树的前序序列和后序序列可以唯一地构造出该二叉树。() 11. 非空二叉排序树的任意一棵子树也是二叉排序树。() 12. 对一棵二叉排序树进行前序遍历一定可以得到一个按值有序的序列。() 13. 若有向图G=(V,E)的拓扑序列不唯一,则图中必须有两条弧和。() 14. 散列表的查找效率主要取决于所选择的散列函数与处理冲突的方法。() 15. 序列初始为逆序时,泡排序法所进行的元素之间的比较次数最多。() 16. 算法一定要有输入和输出。() 17. 算法分析的目的旨在分析算法的效率以求改进算法。() 18. 非空线性表中任意一个数据元素都有且仅有一个直接后继元素。() 19. 数据的存储结构不仅有顺序存储结构和链式存储结构,还有索引结构与散列结构。() 20. 线性链表中各个链结点之间的地址不一定要连续。() 21. 若频繁地对线性表进行插入和删除操作,该线性表采用顺序存储结构更合适。() 22. 若线性表采用顺序存储结构,每个数据元素占用4个存储单元,第12个数据元素的存储地址为144,则第1个数据元素的存储地址是101。() 23. 若长度为n的线性表采用顺序存储结构,删除表的第i个元素之前需要移动表中n-i+1个元素。() 24. 符号link(p)出现在表达式中表示p所指的那个结点的内容。() 25. 要将指针p移到它所指的结点的下一个结点是执行语句p←link(p)。() 26. 在非空线性链表中由p所指的结点后面插入一个由q所指的结点的过程是依次执行语句:link(q)←link(p);link(p)←q。()

形考作业四及答案

形考作业四及答案 (本部分作业覆盖教材第8-9章的内容) 一、单项选择题 1、顺序查找方法适合于存储结构为()的线性表。 A.散列存储B.索引存储 C.散列存储或索引存储D.顺序存储或链接存储 2、对线性表进行二分查找时,要求线性表必须()。 A.以顺序存储方式 B.以链接存储方式 C.以顺序存储方式,且数据元素有序 D.以链接存储方式,且数据元素有序 3、对于一个线性表,若要求既能进行较快地插入和删除,又要求存储结构能够反映数据元素之间的逻辑关系,则应该()。 A.以顺序存储方式B.以链接存储方式 C.以索引存储方式D.以散列存储方式 4、采用顺序查找方法查找长度为n的线性表时,每个元素的平均查找长度为()。 A.n B.n/2 C.(n+1)/2 D.(n-1)/2 5、哈希函数有一个共同的性质,即函数值应当以()取其值域的每个值。 A.最大概率B.最小概率C.平均概率D.同等概率 6、有一个长度为10的有序表,按折半查找对该表进行查找,在等概率情况下查找成功的平均比较次数为()。A.29/10 B.31/10 C.26/10 D.29/9 7、已知一个有序表为{11,22,33,44,55,66,77,88,99},则顺序查找元素55需要比较()次。 A.3 B.4 C.5 D.6 8、顺序查找法与二分查找法对存储结构的要求是()。 A.顺序查找与二分查找均只是适用于顺序表 B.顺序查找与二分查找均既适用于顺序表,也适用于链表 C.顺序查找只是适用于顺序表 D.二分查找适用于顺序表

9、有数据{53,30,37,12,45,24,96},从空二叉树开始逐个插入数据来形成二叉排序树,若希望高度最小,应该选择的序列是()。 A.45,24,53,12,37,96,30 B.37,24,12,30,53,45,96 C.12,24,30,37,45,53,96 D.30,24,12,37,45,96,53 10、对有18个元素的有序表作二分(折半)查找,则查找A[3]的比较序列的下标可能为()。 A.1、2、3 B.9、5、2、3 C.9、5、3 D.9、4、2、3 11、对于顺序存储的有序表{5,12,20,26,37,42,46,50,64},若采用折半查找,则查找元素26的比较次数是()。 A.2 B. 3 C. 4 D.5 12、在所有的排序方法中,关键字比较的次数与记录初始排列秩序无关的是()。 A. 冒泡排序 B. 希尔排序 C. 直接选择排序 D. 直接插入排序 13、从未排序序列中依次取出元素与已经排好序的序列中的元素作比较。将其放入已排序序列的正确的位置上,此方法称为() A. 插入排序 B. 选择排序 C. 交换排序 D. 归并排序 14、从未排序序列中挑选元素,并将其放入已排序序列的一端,此方法称为()。 A. 插入排序 B. 交换排序 C. 选择排序 D. 归并排序 15、依次将每两个相邻的有序表合并成一个有序表的排序方法称为()。 A. 插入排序 B. 交换排序 C. 选择排序 D. 归并排序 16、当两个元素出现逆序的时候就交换位置,这种排序方法称为()。 A. 插入排序 B. 交换排序 C. 选择排序 D. 归并排序 17、每次把待排序的区间划分为左、右两个子区间,其中左区间中记录的关键字均小于等于基准记录的关键字,右区间中记录的关键字均大于等于基准记录的关键字,这种排序称为()。 A. 插入排序 B. 快速排序 C. 堆排序 D. 归并排序 18、在正常情况下,直接插入排序的时间复杂度为()。 A. O(log2n) B. O(n) C. O(n log2n) D. O(n2) 19、在正常情况下,冒泡排序的时间复杂度为()。 A. O(log2n) B. O(n) C. O(n log2n) D. O(n2)

计算机学科专业基础综合数据结构-7

计算机学科专业基础综合数据结构-7 一、单项选择题(总题数:28,分数:74.00) 1.若查找每个记录的概率均等,则在具有n个记录的连续顺序文件中采用顺序查找法查找一个记录,其平均查找长度ASL为______。 A.(n-1)/2 B.n/2 C.(n+1)/2 √ D..n 此结论需要考生当作定理一样的牢记。 顺序查找法适用于查找顺序存储或链式存储的线性表,平均比较次数为______,二分法查找只适用于查找顺序存储的有序表,平均比较次数为______。在此假定N为线性表中结点数,且每次查找都是成功的。(分数:4.00) A.N+1 B.2log2N C.log2N D.N/2 √ E.Nlog2N F..N2 A.N+1 B.2log2N C.log2N √ D.N/2 E.Nlog2N F..N2 2.下面关于二分查找的叙述正确的是______。 A.表必须有序,表可以顺序方式存储,也可以链表方式存储 B.表必须有序且表中数据必须是整型、实型或字符型 C.表必须有序,而且只能从小到大排列 D.表必须有序,且表只能以顺序方式存储√ 二叉查找树的查找效率与二叉树的______有天,在______时查找效率最低。(分数:4.00) A.高度 B.结点的多少 C.树形√ D.结点的位置 A.结点太多 B.完全二叉树 C.呈单枝树√ D.结点太复杂 3.当采用分块查找时,数据的组织方式为______。 A.数据分成若干块,每块内数据有序 B.数据分成若干块,每块内数据不必有序,但块间必须有序,每块内最大(或最小)的数据组成索引块√ C.数据分成若干块,每块内数据有序,每块内最大(或最小)的数据组成索引块 D.数据分成若干块,每块(除最后一块外)中数据个数需相同 本题主要考查分块查找的相关概念。 4.如果要求一个线性表既能较快地查找,又能适应动态变化的要求,可以采用下列哪一种查找方法?______ A.分块√ B.顺序

数据库系统l试题库及答案 第9章 查找

第9章查找 9.1知识点:静态查找表 一、填空题 1.在数据的存放无规律而言的线性表中进行检索的最佳方法是。 2.查找表是由构成的集合。 3.若对查找表只做“查询某个特定的数据元素是否在查找表中”和“查询某个特定的数据元素的各种属 性”操作,则称此类查找表为。若在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已存在的某个数据元素,则称此类查找表为。 4.在n个记录的有序顺序表中进行折半查找,最大的比较次数为。 5.是顺序查找的一种改进方法,又称索引顺序查找,具体实现为将一个主表分成n个子表, 要求子表之间元素是按,而子表中元素可以无序的,用每个子表最大关键字和指示块中第一个记录在表中位置建立。 6.分块查找的时间复杂度是。 7.顺序查找n个元素的顺序表,若查找成功,则比较关键字的次数最多为次;当使用监视哨时,若 查找失败,则比较关键字的次数为次。 8.由于查找运算的主要运算是关键字的比较,所以通常把______________作为衡量一个查找算法效率优劣的 标准。它的计算公式为________________________________________。 二、选择题 1.()在表长为n的链表中进行顺序查找,它的平均查找长度为()。 A. ASL=n B. ASL=(n+1)/2 C. ASL=+1 D. ASL≈log2(n+1)-1 2.()采用折半查找方法查找长度为n的线性表时,平均时间复杂度为()。 A.O(n2) B.O(nlogn) C.O(n) D.O(logn) 3.()折半查找有序表(4,6,10,12,20,30,50,70,88,100)。若查找表中元素58,则它 将依次与表中()比较大小,查找结果是失败。 A.20,70,30,50 B.30,88,70,50 C.20,50 D.30,88,50 4.()有序线性表(a1,a2,a3,…,a256)是从小到大排列的,对一个给定的值k,用二分法检索 表中与k相等的元素,在查找不成功的情况下,最多需要检索()次。 A.8 B.9 C.7 D. 6 5. 只有在顺序存储结构上才能实现的查找方法是( )。 A.顺序查找 B.二分查找 C.树形查找 D. 哈希查找 三、判断题 1.( )在索引顺序表中,实现分块查找,在等概率查找情况下,其平均查找长度不仅与表中元素 个数有关,而且与每块中元素个数有关。 2.( )有n个数存放在一维数组A[1..n]中,在进行顺序查找时,这n个数的排列有序或无序其 平均查找长度不同。 3.()顺序查找法适用于存储结构为顺序或链式存储的线性表。 4.()折半查找法适用于存储结构为顺序或链式存储的线性表。 5.( ) 折半查找法要求查找表有序或无序均可。 四、简答题

数据结构作业——分块查找算法

数据结构实验报告三 题目: 试编写利用折半查找确定记录所在块的分块查找算法。 提示: 1)读入各记录建立主表; 2)按L个记录/块建立索引表; 3)对给定关键字k进行查找; 测试实例:设主表关键字序列:{12 22 13 8 28 33 38 42 87 76 50 63 99 101 97 96},L=4 ,依次查找K=13, K=86,K=88 算法思路 题意要求对输入的关键字序列先进行分块,得到分块序列。由于序列不一定有序,故对分块序列进行折半查找,找到关键字所在的块,然后对关键字所在的块进行顺序查找,从而找到关键字的位置。 故需要折半查找和顺序查找两个函数,考虑用C++中的类函数实现。因为序列一般是用数组进行存储的,这样可以调用不同类型的数组,程序的可适用性更大一些。 折半查找函数: int s,d,ss,dd;//声明一些全局变量,方便函数与主函数之间的变量调用。 template int BinSearch(T A[],int low,int high,T key)//递归实现折半查找 { int mid;// 初始化中间值的位置 T midvalue;// 初始化中间值 if (low>high) { s=A[high]; d=A[low]; ss=high; dd=low; return -1;}// 如果low的值大于high的值,输出-1,并且将此时的low与high的值存储。 else { mid=(low+high)/2;// 中间位置为低位与高位和的一半取整。 midvalue=A[mid]; if (midvalue==key) return mid;

200个元素的有序表,折半查找,长度为8的

题目:探讨折半查找在有序表中的应用 一、介绍有序表和折半查找的概念 有序表是指元素按照一定的顺序排列的线性表,其中的元素可以是数字、字母、符号等。而折半查找,也称为二分查找,是一种在有序表中查找特定元素的算法。它通过将目标值与表中间的值进行比较,并根据比较结果排除一半的元素,从而快速地定位目标值的位置。 二、有序表的构建和特点 1. 有序表通常是通过排序算法将无序表中的元素按照一定的顺序进行排列而成的。 2. 有序表的元素可以按照升序或降序排列,常见的排序算法包括冒泡排序、快速排序、插入排序等。 3. 有序表的构建需要消耗一定的时间和空间,但它可以提高查找、插入和删除元素的效率。 三、折半查找的基本原理 1. 折半查找是基于有序表的特点而设计的查找算法,它的基本原理是通过不断将目标值与中间值进行比较,从而缩小需要查找的范围。 2. 折半查找的时间复杂度为O(logn),在查找大规模数据时速度非常快,适合于静态有序表的查找操作。 四、200个元素的有序表中的折半查找

1. 假设有一个含有200个元素的有序表,编号分别为1至200。 2. 对于折半查找来说,首先需要将有序表按照升序排列。 3. 接下来,确定要查找的目标值,例如为100。 4. 此时,将目标值100与有序表中间位置的值进行比较,假设中间位置的值为150。 5. 由于100小于150,因此可以排除后半部分的元素。 6. 在前半部分的元素中再次取中间位置的值进行比较,重复这个过程直到找到目标值为止。 五、长度为8的有序表中的折半查找 1. 如果有一个长度为8的有序表,编号分别为1至8。 2. 则按照折半查找的方法,首先将有序表按照升序排列。 3. 确定要查找的目标值,例如为6。 4. 将目标值6与有序表中间位置的值进行比较,假设中间位置的值为4。 5. 由于6大于4,因此可以排除前半部分的元素。 6. 在后半部分的元素中再次取中间位置的值进行比较,重复这个过程直到找到目标值为止。 六、折半查找在实际应用中的意义 1. 折半查找在大规模数据的查找操作中具有较高的效率,适用于静态有序表的查找。 2. 在数据库中,折半查找可以帮助快速定位到需要查找的数据,提高

数据结构(C++版)课后答案 (王红梅)第7章 查找技术

第 7 章查找技术 课后习题讲解 1. 填空题 ⑴顺序查找技术适合于存储结构为()的线性表,而折半查找技术适用于存储结构为()的线性表,并且表中的元素必须是()。 【解答】顺序存储和链接存储,顺序存储,按关键码有序 ⑵设有一个已按各元素值排好序的线性表,长度为125,用折半查找与给定值相等的元素,若查找成功,则至少需要比较()次,至多需比较()次。 【解答】1,7 【分析】在折半查找判定树中,查找成功的情况下,和根结点的比较次数最少,为1次,最多不超过判定树的深度。 ⑶对于数列{25,30,8,5,1,27,24,10,20,21,9,28,7,13,15},假定每个结点的查找概率相同,若用顺序存储结构组织该数列,则查找一个数的平均比较次数为()。若按二叉排序树组织该数列,则查找一个数的平均比较次数为()。 【解答】8,59/15 【分析】根据数列将二叉排序树画出,将二叉排序树中查找每个结点的比较次数之和除以数列中的元素个数,即为二叉排序树的平均查找长度。 ⑷长度为20的有序表采用折半查找,共有()个元素的查找长度为3。 【解答】4 【分析】在折半查找判定树中,第3层共有4个结点。 ⑸假定一个数列{25,43,62,31,48,56},采用的散列函数为H(k)=k mod 7,则元素48的同义词是()。【解答】62 【分析】H(48)= H(62)=6 ⑹在散列技术中,处理冲突的两种主要方法是()和()。 【解答】开放定址法,拉链法 ⑺在各种查找方法中,平均查找长度与结点个数无关的查找方法是()。 【解答】散列查找 【分析】散列表的平均查找长度是装填因子的函数,而不是记录个数n的函数。

科文学院09z网络数据结构期末复习资料--简答题

科文学院09z 网络数据结构期末复习资料 三、简答题 1、已知一个6⨯5稀疏矩阵如下所示,试: ⎥ ⎥⎥⎥⎥⎥⎥⎥⎦⎤ ⎢⎢ ⎢⎢⎢ ⎢⎢ ⎢⎣ ⎡--00 7000000520000000100000010000 (1)写出它的三元组线性表; (2)给出三元组线性表的顺序存储表示。 (1)((1,5,1),(3,2,-1),(4,5,-2),(5,1,5),(6,3,7)) (2)三元组线性表的顺序存储表示如下所示: ⎥⎥⎥⎥⎥⎥⎥⎥⎦ ⎤ ⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡--726 515254123151556 2、求网的最小生成树有哪些算法?它们的时间复杂度分别下多少,各适用何种情况? 求网的最小生成树可使用Prim 算法,时间复杂度为O(n 2),此算法适用于边较多的稠密图,也可使用Kruskal 算法,时间复杂度为O(eloge),此算法适用于边较少的稀疏图。 3、对于如下图所示的有向图若存储它采用邻接表,并且每个顶点邻接表中的边结点都是按照终点序号从小到大的次序的,试写出: (1)从顶点v1出发进行深度优先搜索所得到的深度优先生成树; (2)从顶点v2出发进行广度优先搜索所得到的广度优先生成树。 (1)DFS :v1 v2 v3 v4 v5 (2)BFS :v2 v3 v4 v5 v1 4、已知一个图的顶点集V 和边集E 分别为: V={1,2,3,4,5,6,7}; E={<2,1>,<3,2>,<3,6>,<4,3>,<4,5>,<4,6>,<5,1>,<5,7>,<6,1>,<6,2>,<6,5>}; 若存储它采用邻接表,并且每个顶点邻接表中的边结点都是按照终点序号从小到大的次序的,试给出得到的拓扑排序的序列。 拓扑排序为: 4 3 6 5 7 2 1 5、对于序列{8,18,6,16,29,28},试写出堆顶元素最小的初始堆。 所构造的堆如下图所示:

数据结构与算法-查找

数据结构与算法-查找 目录 一、查找的定义二、线性表的查找 2.1 、顺序查找 2.2、二分查 找 2.3、分块查找三、树表查找 3.1 、二叉排序树 3.2 、平衡二叉树一、查找的定义 查找又称检索,是数据处理中经常使用的一种重要运算。采用何种查 找方法,首先取决于使用哪种数据结构来表示“表”,及表中的数据元素按何种方式组织。查找有内查找和外查找之分。若整个查找过程都在内 存进行,则称为内查找;反之,若查找过程需要访问外存,则称为外查 找。关键字是指数据元素(记录)中一些项或组合项的值,用它可以标 识一个数据元素(记录)。能唯一确定一个数据元素(记录)的关键字,称为主关键字;而不能唯一确定一个数据元素(记录)的关键字,称为次关键 字。查找表是指由具有同一类型(属性)的数据元素(记录)组成的集合。 分为静态查表和动态查找表。静态查找是指仅对查找表进行查找操作,而不改变查找表中的数据元素。动态查找是指除进行查找操作外,可能还要进行向表中插入或删除数据元素的操作。 平均查找长度 二、线性表的查找 2.1 、顺序查找 顺序查找( Sequential Search) 是一种最基本也是最简单的查找方法。它的基本思想是蛮力法,从表的一端开始,顺序扫描线性表,逐个进行结点关键字值与给定的值k相比较,若当前扫描到的结点关键字与k相等, 则查找成功;若扫描整个表后,仍未找到关键字与给定值k相等的结点,则查找失败。顺序查找方法既适用于线性表的顺序存储结构,也适用 于线性表的链式存储结构。使用单链表作存储结构时,查找必须从头指针开始,因此只能进行顺序查找。顺序查找代码如下: 顺序查找算法的时间复杂度为O(n)。顺序查找的优点是算法简单,且对表的结构无任何要求,无论用顺序表还是链表来存放结点,也无论结点是否按关键字有序,都同样适用。顺序查找的缺点是查找效率低,当n 较大时,不宜采用顺序查找。对于线性链表,只能进行顺序查找。 2.2 、二分查找 二分查找( Binary Search)又称折半查找,是一种效率较高的查找方法。 但是,二分查找要求线性表是有序表,即表中的数据元素按关键字有序 组织,并且要用顺序表作为表的存储结构。在下面讨论中,假设有序

电大数据结构考试汇总---(填空题)

电大数据结构考试汇总---(填空题) 1、在一个长度为n的顺序存储结构的线性表中,向第 i(1≤i≤n+1)个元素之前插入新元素时,需向后移动n-i+1个数据元素。 2、从长度为n的采用顺序存储结构的线性表中删除第 i(1≤i≤n+1)个元素,需向前移动n-i个元素。3、数据结构按结点间的关系,可分为4种逻辑结构: 集合、线性结构、树形结构、图状结构。 4、数据的逻辑结构在计算机中的表示称为物理结构 或存储结构。 5、除了第1个和最后一个结点外,其余结点有且只有一 个前驱结点和后继结点的数据结构为线性结构,每个结点可有任意多个前驱和后继结点数的结构为非线性结构。 6、算法的5个重要特性是有穷性、确定性、可形 性、有零个或多个输入、有零个或多个输出。 7、数据结构中的数据元素存在多对多的关系称为图 状结构结构。 8、数据结构中的数据元素存在一对多的关系称树 形结构结构。 9、数据结构中的数据元素存在一对一的关系称为线 性结构结构。 10、要求在n个数据元素中找其中值最大的元素,设基本 操作为元素间的比较。则比较的次数和算法的时间复杂度分别为n-1和O(n)。 11、在一个单链表中p所指结点之后插入一个s所指结点 时,应执行__s->next=p->next;__和p->next=s;的操作。 12、设有一个头指针为head的单向循环链表,p指向链 表中的结点,若p->next= =head,则p所指结点为尾结点。 13、在一个单向链表中,要删除p所指结点,已知q指向

p所指结点的前驱结点。则可以用操作q->next=p->next; 。 14、设有一个头指针为head的单向链表,p指向表中某 一个结点,且有p->next= =NULL,通过操作p->next=head;,就可使该单向链表构造成单向循环链表。 15、每个结点只包含一个指针域的线性表叫单链表。16、线性表具有顺序存储和链式存储两种 存储结构。 17、数据的逻辑结构是从逻辑关系上描述数据,它与数据 的关系存储结构无关,是独立于计算机的。18、在双向循环链表的每个结点中包含两个指针域,其 中next指向它的直接后继,prior指向它的直接前驱,而头结点的prior指向尾结点,尾结点的next指向头结点。 19、单向循环链表是单向链表的一种扩充,当单向链表带 有头结点时,把单向链表中尾结点的指针域由空指针改为头结点的指针;当单向链表不带头结点时,则把单向链表中尾结点的指针域由空指针改为指向指向第一个结点的指针。 20、线性链表的逻辑关系时通过每个结点指针域中的指 针来表示的。其逻辑顺序和物理存储顺序不再一致,而是一种链式存储结构,又称为链表。 21、栈是限定在表的一端进行插入和删除操作的线性表, 又称为后进先出表。 22、队列的特性是先进先出表。 23、往栈中插入元素的操作方式是:先移动栈顶指针, 后存入元素。 24、删除栈中元素的操作方式是:先取出元素,后移 动栈顶指针。 25、循环队列队头指针在队尾指针下一个位置,队列是 “满”状态 26、在队列的顺序存储结构中,当插入一个新的队列元素 时,尾指针增1 ,当删除一个元素队列时,头指针增1。

自-《数据结构》习题集:第9章查找(第1次更新2012-5)

第9章查找 一、选择题 1.顺序查找一个共有n个元素的线性表,其时间复杂度为(),折半查找一个具有n个元素的有序表,其时 间复杂度为()。【*,★】 A.O(n) B. O(log2n) C. O(n2) D. O(nlog2n) 2.在对长度为n的顺序存储的有序表进行折半查找,对应的折半查找判定树的高度为()。【*,★】 A.n B. ⌊log2n⌋ C. ⌊log2(n+1)⌋ D. ⌈log2(n+1)⌉ 3.采用顺序查找方式查找长度为n的线性表时,平均查找长度为()。【*】 A.n B. n/2 C. (n+1)/2 D. (n-1)/2 4.采用折半查找方法检索长度为n的有序表,检索每个元素的平均比较次数()对应判定树的高度(设高度 大于等于2)。【**】 A.小于 B. 大于 C. 等于 D. 大于等于 5.已知有序表(13,18,24,35,47,50,62,83,90,115,134),当折半查找值为90的元素时,查找成功的 比较次数为()。【*】 A. 1 B. 2 C. 3 D. 4 6.对线性表进行折半查找时,要求线性表必须()。【*】 A.以顺序方式存储 B. 以链接方式存储 C.以顺序方式存储,且结点按关键字有序排序 D. 以链接方式存储,且结点按关键字有序排序 7.顺序查找法适合于存储结构为()的查找表。【*】 A.散列存储 B. 顺序或链接存储 C. 压缩存储 D. 索引存储 8.采用分块查找时,若线性表中共有625个元素,查找每个元素的概率相同,假设采用顺序查找来确定结点所在 的块时,每块应分()个结点最佳。【**】 A.10 B. 25 C. 6 D. 625 9.从键盘依次输入关键字的值:t、u、r、b、o、p、a、s、c、l,建立二叉排序树,则其先序遍历序列为(), 中序遍历序列为()。【**,★】 A.abcloprstu B. alcpobsrut C. trbaoclpsu D. trubsaocpl 10.折半查找和二叉排序树的时间性能()。【*】 A.相同 B. 不相同 11.一棵深度为k的平衡二叉树,其每个非终端结点的平衡因子均为0,则该树共有()个结点。 A.2k-1-1 B. 2k-1 C. 2k-1+1 D. 2k-1 12.利用逐点插入法建立序列{50,72,43,85,75,20,35,45,65,30}对应的二叉排序树以后,查找元素35要 进行()元素间的比较。 A.4次 B. 5次 C. 7次 D. 10次 13.设Hash地址空间为0到m-1,哈希函数为h(k)=k%p,为了减少发生冲突的可能性,一般取p为()。 A.小于m的最大奇数 B. 小于m的最大素数 C. 小于m的最大偶数 D. 小于m的最大合数

《数据结构及其应用》笔记含答案 第七章_查找

第7章查找 一、填空题 1、查找表分为_动态查找表_和_静态查找表_两类。 2、在等概率查找的情况下,顺序表查找的平均查找长度为_(n+1)/2_。 2、若二叉排序树的右子树不空,则右子树上所有结点的值均___大于____它的根结点的值。 二、判断题 1、顺序查找可以在顺序表上进行,不能在单链表上进行。(×) 2、折半查找只能在有序的顺序表上进行。(√) 3、对于给定的关键字集合,以不同的次序插入到初始为空的二叉排序树中,得到的二叉排序树是相同的。(×) 4、若二叉排序树中关键字互不相同,那么,最小值结点必定无左孩子,最大值结点必定无右孩子。(√) 5、在二叉排序树中,最大值结点和最小值结点一定是叶子结点。(×) 6、哈希法存储的基本思想是由关键码的值决定数据的存储地址。(√) 三、单项选择题 1、对n个元素的表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为(C)。A.(n-1)/2 B.n/2 C.(n+1)/2 D.n 解释:总查找次数N=1+2+3+…+n=n(n+1)/2,则平均查找长度为N/n=(n+1)/2。 2、适用于折半查找的表的存储方式及元素排列要求为(D)。 A.链接方式存储,元素无序B.链接方式存储,元素有序 C.顺序方式存储,元素无序D.顺序方式存储,元素有序 解释:折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。 3、如果要求一个线性表既能较快的查找,又能适应动态变化的要求,最好采用( C)查找法。A.顺序查找B.折半查找 C.分块查找D.哈希查找 解释:分块查找的优点是:在表中插入和删除数据元素时,只要找到该元素对应的块,就可以在该块内进行插入和删除运算。由于块内是无序的,故插入和删除比较容易,无需进行大量移动。如果线性表既要快速查找又经常动态变化,则可采用分块查找。 4、折半查找有序表(4,6,10,12,20,30,50,70,88,100)。若查找表中元素58,则它将依次与表中(A)比较大小,查找结果是失败。 A.20,70,30,50 B.30,88,70,50 C.20,50 D.30,88,50 解释:表中共10个元素,第一次取⎣(1+10)/2⎦=5,与第五个元素20比较,58大于20,再取⎣(6+10)/2⎦=8,与第八个元素70比较,依次类推再与30、50比较,最终查找失败。 5、对22个记录的有序表作折半查找,当查找失败时,至少需要比较(B)次关键字。A.3 B.4 C.5 D.6 解释:22个记录的有序表,其折半查找的判定树深度为⎣log222⎦+1=5,且该判定树不是满二叉树,即查找失败时至多比较5次,至少比较4次。 6、折半搜索与二叉排序树的时间性能(C)。

数据结构第7章作业参考答案

第7章查找 一、单选 1.顺序查找法比较适合于(C )。 A. 数据有序的序列 B. 数据基本有序的序列 C. 数据无序的序列 D. 数据集比较大的序列 2.若查找每个记录的概率均等,则在具有n个记录的连续顺序文件中采用顺序查找法查找 一个记录,查找成功时平均查找长度ASL为(B )。 A. (n-1)/2 B. (n+1)/2 C. n/2 D. n 3.二分查找法适用于存储结构为(A )的线性表。 A. 顺序存储且按关键字有序 B. 链式存储且按关键字有序 C. 顺序存储或链式存储 D. 顺序存储且无序 4.采用分快查找时,数据的组织方式为( B )。 A.数据分成若干块,每块内数据有序 B.数据分成若干块,每块内数据不必有序,但块间必须有序,每块内最大(或最小)的数据组成索引块 C. 数据分成若干块,每块内数据有序,每块内最大(或最小)的数据组成索引块 D. 数据分成若干块,每块(除最后一块外)中数据个数需相同 5.设有一个已按各元素的值排好序的顺序表(长度大于2),现分别用顺序查找法和二分查 找法查找与给定值k 相等的元素,比较的次数分别是s 和b,在查找不成功的情况下,s 和b的关系是(C )。 A. s=b B. sb D. s>=b 6.设顺序存储的线性表共有123个元素,按分块查找的要求等分成3块。若对索引表采用 顺序查找来确定块,并在确定的块中进行顺序查找,则在查找概率相等的情况下,分块查找成功时的平均查找长度为(B )。 A. 41 B. 23 C. 21 D. 62 7.含n个关键字的二叉排序树的平均查找长度主要取决于( C )。 A. 关键字的个数 B. 关键字的取值范围 C. 树的形态 D. 关键字的数据类型 8.在二叉排序树上查找一个记录,最坏情况下查找成功时的平均查找长度为(A )。 A. 与顺序表的平均查找长度相同 B. 小于顺序表的平均查找长度 C. 大于顺序表的平均查找长度 D. 无法与顺序表的平均查找长度比较 9.在一个二叉排序树中,按( B )遍历是一个有序序列。 A. 先序遍历 B. 中序遍历 C. 后序遍历 D. 按层次遍历 10.与其他查找方法相比,散列查找法的特点是( C )。

数据结构习题 5

第8章查找 8.1选择题 1.顺序查找法适合于存储结构为()的线性表。 A)散列存储B)顺序存储或链接存储C)压缩存储D)索引存储 2.下面哪些操作不属于静态查找表() A)查询某个特定元素是否在表中B)检索某个特定元素的属性 C)插入一个数据元素D)建立一个查找表 3.下面描述不正确的是() A)顺序查找对表中元素存放位置无任何要求,当n较大时,效率低。 B)静态查找表中关键字有序时,可用二分查找。 C)分块查找也是一种静态查找表。 D)经常进行插入和删除操作时可以采用二分查找。 4.散列查找时,解决冲突的方法有() A)除留余数法B)数字分析法C)直接定址法D)链地址法 5.若表中的记录顺序存放在一个一维数组中,在等概率情况下顺序查找的平均查找长度为() A)O(1)B)O(log2n) C)O(n) D)O(n2) 6.对长度为4的顺序表进行查找,若第一个元素的概率为1/8,第二个元素的概率为1/4,第三个元素的概率为3/8,第四个元素的概率为1/4,则查找任一个元素的平均查找长度为() A)11/8 B)7/4 C)9/4 D)11/4 7.静态查找表与动态查找表二者的根本差别在于() A)它们的逻辑结构不一样B)施加在其上的操作不同 C)所包含的数据元素的类型不一样D)存储实现不一样 8.若查找表中的记录按关键字的大小顺序存放在一个一维数组中,在等概率情况下二分法查找的平均检索长度是() A)O(n) B)O(log2n) C)O(nlog2n) D)O((log2n)2) 9.对有14个数据元素的有序表R[14](假设下标从1开始)进行二分查找,搜索到R[4]的关键码等于给定值,此时元素比较顺序依次为()。 A)R[1],R[2],R[3],R[4] B)R[1],R[13],R[2],R[3] C)R[7],R[3],R[5],R[4] D)R[7],R[4],R[2],R[3] 10.设有一个长度为100的已排好序的表,用二分查找进行查找,若查找不成功,至少比较()次。A)9B)8 C)7 D)6

jim数据结构复习题整理(答案)

<<数据结构>>复习题 1.以Niklus Wirth的观点,程序等于什么? 算法+数据结构 2.算法的重要特性。 有穷性,确定性,可行性,输入,输出 3.好算法的标准。 正确性,可读性,健壮性,高效率低存储量的需求 4.线性结构的特点。 (一)存在唯一的一个称做"第一个"的数据元 (二)存在唯一的一个称做"最后一个"的数据元素 (三)除了第一个外,其余的每个元素都有前驱 (四)除了最后一个外,其余的每个元素只要一个后继 5.线性结构与非线性结构的区别。 在线性结构中,该数据结构中的元素是一对一的关系,非线性结构就不是了 线性结构是最简单最常用的一种数据结构,线性结构的特点是结构中的元素之间满足线性关系,按这个关系可以把所有元素排成一个线性序列.线性表,串,栈和队列都属于线性结构. 非线性结构是指在该类结构中至少存在一个数据元素,它具有两个或者两个以上的前驱或后继.如树和二叉树等. 6.列出所学过的线性结构与非线性结构。 线性结构:线形表,链表,静态链表,栈,队列 非线形结构:树,图 ,广义表 7.头指针、头结点、首元结点的区别。 头结点:表头结点,不含有数据 头指针:一个指针变量,指向链表中的第一个结点 首元结点:链上第一个含有数据的结点 头指针指链表的指针,若链表有头结点则是链表的头结点的指针,头指针具有标识作用,

故常用头指针冠以链表的名字。头结点是为了操作的统一、方便而设立的,放在第一元素结点之前,其数据域一般无意义(当然有些情况下也可存放链表的长度、用做监视哨等等),有头结点后,对在第一元素结点前插入结点和删除第一结点,其操作与对其它结点的操作统一了。而且无论链表是否为空,头指针均不为空。首元结点也就是第一元素结点,它是头结点后边的第一个结点。 8.带头结点和不带头结点的线性链表的区别。 带头结点的线形链表:便于单个链表的操作,操作比较方便 不带头结点的线形链表:便于多个链表的收集(基数排序) 头节点的作用(可参考) (1) 对带头结点的链表,在表的任何结点之前插入结点或删除表中任何结点,所要做的都是修改前一结点的指针域,因为任何元素结点都有前驱结点。若链表没有头结点,则首元素结点没有前驱结点,在其前插入结点或删除该结点时操作会复杂些。 (2) 对带头结点的链表,表头指针是指向头结点的非空指针,因此空表与非空表的处理是一样的。 9.单链表、双链表、循环链表的区别及各自的优缺点。 单链表:每个结点中只包含一个指针域 优点:插入和删除时候不需要移动大量的元素 双链表:有两个指针域,其一指向直接后继,其二指向直接前驱 优点:查找直接前驱的时候,则从头指针出发,能够克服单链表这种单向性的缺点 循环链表:最后一个结点的指针域指向头结点 优点:使两个表连接起来就很简单,这个操作仅需两个指针即可,插入、删除时,不会断链等。 10.栈和队列是什么样的线性表? 栈与队列是操作受限制的线性表 11.指出顺序线性表、顺序栈、顺序队列的区别。 相同:他们都是线性表,都是一维数组, 不相同:操作不同而已; 线性表:任意位置操作 栈:栈顶操作 队列:尾进头出

《数据结构与算法》考研真题精选-1

《数据结构与算法》考研真题精选 一、选择题 1.若查找每个记录的概率均等,则在具有n个记录的连续顺序文件中采用顺序查找法查找一个记录,其平均查找长度ASL为( )。 A.(n-1)/2 B. n/2 C. (n+1)/2 D. n 2. 对N个元素的表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为( ) A.(N+1)/2 B. N/2 C. N D. [(1+N)*N ]/2 3.顺序查找法适用于查找顺序存储或链式存储的线性表,平均比较次数为((1)),二分法查找只适用于查找顺序存储的有序表,平均比较次数为((2))。在此假定N为线性表中结点数,且每次查找都是成功的。 A.N+1 B.2log2N C.logN D.N/2 E.Nlog2N F.N2 4. 下面关于二分查找的叙述正确的是( ) A. 表必须有序,表可以顺序方式存储,也可以链表方式存储 C. 表必须有序,而且只能从小到大排列 B. 表必须有序且表中数据必须是整型,实型或字符型 D. 表必须有序,且表只能以顺序方式存储 5. 对线性表进行二分查找时,要求线性表必须() A.以顺序方式存储 B.以顺序方式存储,且数据元素有序 C.以链接方式存储 D.以链接方式存储,且数据元素有序 6.适用于折半查找的表的存储方式及元素排列要求为( ) A.链接方式存储,元素无序B.链接方式存储,元素有序 C.顺序方式存储,元素无序D.顺序方式存储,元素有序 7. 用二分(对半)查找表的元素的速度比用顺序法( ) A.必然快 B. 必然慢 C. 相等 D. 不能确定 8.当在一个有序的顺序存储表上查找一个数据时,即可用折半查找,也可用顺序查找,但前者比后者的查找速度( ) A.必定快 B.不一定 C. 在大部分情况下要快 D. 取决于表递增还是递减 9. 具有12个关键字的有序表,折半查找的平均查找长度() A. 3.1 B. 4 C. 2.5 D. 5 10. 折半查找的时间复杂性为() A. O(n2) B. O(n) C. O(nlog n) D. O(log n) 11.当采用分快查找时,数据的组织方式为( ) A.数据分成若干块,每块内数据有序 B.数据分成若干块,每块内数据不必有序,但块间必须有序,每块内最大(或最小)的数据组成索引块 C. 数据分成若干块,每块内数据有序,每块内最大(或最小)的数据组成索引块 D. 数据分成若干块,每块(除最后一块外)中数据个数需相同 12. 二叉查找树的查找效率与二叉树的( (1))有关, 在((2))时其查找效率最低 (1): A. 高度 B. 结点的多少 C. 树型 D. 结点的位置 (2): A. 结点太多 B. 完全二叉树 C. 呈单枝树 D. 结点太复杂。 13. 要进行顺序查找,则线性表(1);要进行折半查询,则线性表(2);若表中元素个数为n,则顺序查找的平均比较次数为(3);折半查找的平均比较次数为(4)。 (1)(2):A. 必须以顺序方式存储;B. 必须以链式方式存储;C. 既可以以顺序方式存

相关主题