9.二分法查找数据
全国计算机二级access选择题9

数据结构中,与所使用的计算机无关的是数据的______。
A、存储结构B、物理结构C、逻辑结构D、物理和存储结构数据结构概念一般包括3个方面的内容,数据的逻辑结构、存储结构及数据上的运算集合。
数据的逻辑结构只抽象的反映数据元素之间的逻辑关系,而不管它在计算机中的存储表示形式。
本题答案为C。
下列数据结构中,能用二分法进行查找的是______。
A、顺序存储的有序线性表B、线性链表C、二叉链表D、有序线性链表二分法查找只适用于顺序存储的有序表。
在此所说的有序表是指线性表中的元素按值非递减排列(即从小到大,但允许相邻元素值相等)。
故本题答案为A。
下列叙述中正确的是______。
A、软件测试应该由程序开发者来完成B、程序经调试后一般不需要再测试C、软件维护只包括对程序代码的维护D、以上三种说法都不对程序调试的任务是诊断和改正程序中的错误。
它与软件测试不同,软件测试是尽可能多地发现软件中的错误。
先要发现软件的错误,然后借助于一定的调试工具去找出软件错误的具体位置。
软件测试贯穿整个软件生命期,调试主要在开发阶段。
为了达到更好的测试效果,应该由独立的第三方来构造测试。
因为从心理学角度讲,程序人员或设计方在测试自己的程序时,要采取客观的态度是程度不同地存在障碍的。
软件的运行和维护是指将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。
按照"后进先出"原则组织数据的数据结构是______。
A、队列B、栈C、双向链表D、二叉树栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。
二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种"后进先出"的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种"先进先出"的线性表。
下列描述中正确的是______。
A、线性链表是线性表的链式存储结构B、栈与队列是非线性结构C、双向链表是非线性结构D、只有根结点的二叉树是线性结构根据数据结构中各数据元素之间前后关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。
信息学初赛模拟试题(七、八)及答案

信息学初赛模拟试题(七)一、选择一个正确答案代码(A/B/C/D),填入每题的括号内(本题共20小题,每题1.5分共30分。
1—10小题为单选题,11—20小题为不定项选择题,每题有一个或多个答案。
)1、如果按字长来划分,微型机可以分为8位机、16位机、32位机和64位机。
所谓32位机是指该计算机所用的CPU()A、同时能处理32位二进制数B、具有32位的寄存器C、只能处理32位二进制定点数D、有32个寄存器E、存储方式是32位2、下列表达式正确的是()A、(1)10>(1)2B、(12)10>(10)16C、(15)8>(10)16D、(101)2>(15)16E、(121)10=(79)163、关闭一个活动应用程序窗口,可按快捷键()A、Ctrl+F4B、Alt+F4C、Alt+EscD、Ctrl+EscE、Shift+Esc4、结构化程序设计的三种结构是()A、顺序结构、选择结构、转移结构B、分支结构、等价结构、循环结构C、多分结构、赋值结构、等价结构D、分支结构、顺序结构、选择结构E、循环结构、顺序结构、选择结构5、编译程序是指()A、将高级语言源程序翻译成机器语言程序(目标程序)B、将机器语言源程序翻译成高级语言程序(目标程序)C、对源程序边扫描边翻译执行D、对目标程序装配连接E、运行源程序并修改错误6、在pascal语言中下列运算符()的优先级别最高A、ANDB、NOTC、<>D、*E、OR7、在线性表中,那些结点只有一个直接前驱和一个直接后续()A、头结点B、尾结点C、中间的结点D、所有结点E、不确定8、具有12个记录的序列,采用冒泡排序法最少的比较次数是()A、1B、144C、11D、66E、09、有N个结点的图的邻接矩阵存储法中,链表的表头结点有()个。
A、NB、2NC、N/2D、N*NE、N-210、表达式SQRT(ABS(-100)*SQR(ROUND(3.7)))的值是()。
全国计算机二级公共基础知识必背考点【最新版】

全国计算机二级公共基础知识必背考点1. 算法的有穷性是指算法必须能执行有限个步骤之后终止.2. 算法的时间复杂度是指算法在执行过程中所需要的基本运算次数3. 队列、栈、线性表属于线性数据结构,二叉树不属于4. 数据的存储结构是指:数据的逻辑结构在计算机中的表示5. 一个逻辑数据结构可有多种存储结构,且各种存储结构影响数据处理的效率6. 线性链表是线性表的链式存储结构7. 栈是先进后出、后进先出的线性链表,具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针,是特殊的线性表,只能在一端插入或者删除元素8. 线性链表存储空间不一定连续,且各元素的存储顺序是任意的9. 在深度为7 的满二叉树中,叶子节点的个数为:6410. 能用二分法查找的是顺序存储的有序线性表11. 对长度为N 的线性表进行顺序查找,在最坏的情况下需要比较的次数为:N12. 对于长度为N 的线性表,在最坏的情况下,下列各排序法所对应的比较次数中正确的是:快速排序为N(N-1)/213. 算法的复杂度包括时间复杂度和空间复杂度14. 算法在执行过程中所需要的存储空间称为算法的空间复杂度15. 问题处理方案的正确而完整的描述称为算法16. 数据的逻辑结构在计算机存储控件中的存放方式称为数据的存储结构或者物理结构或者物理存储结构17. 按照逻辑结构分类,数据结构可以分为线性结构和非线性结构,二叉树属于非线性结构18. 数据结构分为逻辑结构和存储结构,循环队列属于存储结构19. 某二叉树中度为2 的结点有18 个,则该二叉树中共有19 个叶子结点20. 一颗二叉树第六层(根节点为第一层)的结点数最多为32 个21. 对长度为10 的线性表进行冒泡排序,最坏的情况下需要比较的次数为4522. 程序经调试改错后还应进行再调试23. 符合结构化程序设计风格的是使用顺序、选择和重复三种基本控制结构标示程序的控制结构24. 结构化程序设计的一种基本方法是逐步求精法、自顶向下、模块法25. 在面向对象的方法中,一个对象请求另一个对象为其服务的方式是通过发送消息26. 在软件工程学中,我们把一组具有相同的数据结构和相同的行为特征的对象的集合定义为类27. 面向对象的方法有对象/继承/类28. 在面向对象的方法中,类的实例称为对象9. 在面向对象的方法中,类描述的是具有相同属性与操作的一组对象30. 结构化程序设计的3 种基本逻辑机构为顺序、选择和重复(循环)31. 在面向对象的方法中,类之间共享属性和操作的机制称为继承32. 软件是程序、数据与相关文档的集合33. 在软件开发中,属于设计阶段的是:数据结构设计、给出系统模块结构、定义模块算法34. 软件工程的主要思想是强调在软件开发的过程中需要应用工程化原则35. 软件交付使用后还应进行维护36. 在结构化方法中,用数据流程图(DFD )作为描述工具的软件开发阶段是需求分析37. 软件设计的原则有抽象、模块化、信息隐蔽38. 为了是模块尽可能独立,需求模块的内聚程度要尽量高,且各模块的耦合程度要尽量弱39. 在软件设计中,属于过程设计工具的是:PDL 过程设计语言、PAD 图、N-S 图40. 软件测试的目的是尽可能多地发现程序中的错误41. 软件需求阶段的工作,可以分为四个方面:需求获取、需求分析、编写需求规格说明书和需求评审42. 在结构化方法中,软件功能分解属于总体设计阶段43. 软件工程的三要素:工具过程方法44. 若按功能划分,软件测试的方法通常分为白盒测试和黑盒测试45. 在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块),其中驱动模块的作用是将测试数据传送给被测试的模块,并显示被测试模块的测试结果46. 程序测试分为静态分析和动态测试,其中静态分析(静态测试)是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误47. 诊断和改正程序中错误的工作通常称为调试48. 软件是程序、数据和文档的集合49. 软件工程研究的内容主要是软件开发技术和软件工程管理50. 数据库系统的核心是数据库管理系统51. 数据库系统的根本目标是解决数据共享问题52. 能给出数据库物理存储与物理存取方法的是内模式53. 在数据库的两极映射中,从概念模式到内模式的映射一般由数据库管理系统实现54. 支持数据库各种操作的软件系统叫作数据库管理系统55. 数据库(DB )\数据库系统(DBS )、数据库管理系统(DBMS )之间的关系是:DBS 包含DB 和DBMS56. 在关系数据库模型中,通常可以把字段称为属性,其值称为属性值57. 用树形结构来表示实体之间联系的模型称为层次模型58. 在E-R 图中,用来表示实体的图形是矩形59. 商品与顾客两个实体之间的联系一般是多对多60. 数据库系统在其内部分为三级模式,即概念模式、内模式和外模式,其中内模式给出了数据库中物理存储结构与物理存取方法62. 数据管理技术发展过程经过人工管理、文件系统和数据库系统三个阶段,其中数据独立性最高的阶段是数据库系统62. 数据独立性分为逻辑独立性和物理独立性,当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,称为物理独立性63.如果一个工人可以管理多台设备,而一个设备只被一个工人管理,则实体工人与实体设备之间存在一对多的关系64. 关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、参照完整性和自定义完整性65. 在关系数据库中,把数据表示成二维表,每一个二维表称为关系或关系表66. 关系数据库管理系统能实现的专门关系运算包括选择、连接和投影。
数据结构试题及答案

8.8.(1,3,4,2),(1,3,2,4)
三、应用题
1.1.(22,40,45,48,80,78),(40,45,48,80,22,78)
2.2.q->llink=p; q->rlink=p->rlink; p->rlink->llink=q; p->rlink=q;
3.3.2,ASL=91*1+2*2+3*4+4*2)=25/9
int m;
while(i<j){
while (i<j && r[j]>x) j=j-1; if (i<j) {r[i]=r[j];i=i+1;}
while (i<j && r[i]<x) i=i+1; if (i<j) {r[j]=r[i];j=j-1;}
}
r[i]=x;
}
2.设有两个集合A和集合B,要求设计生成集合C=A∩B的算法,其中集合A、B和C用链式存储结构表示。
(A) n,e(B) e,n(C) 2n,e(D) n,2e
8.设某强连通图中有n个顶点,则该强连通图中至少有()条边。
(A) n(n-1)(B) n+1(C) n(D) n(n+1)
9.设有5000个待排序的记录关键字,如果需要用最快的方法选出其中最小的10个记录关键字,则用下列()方法可以达到此目的。
4.4.快速排序的最坏时间复杂度为___________,平均时间复杂度为__________。
5.5.设某棵二叉树中度数为0的结点数为N0,度数为1的结点数为N1,则该二叉树中度数为2的结点数为_________;若采用二叉链表作为该二叉树的存储结构,则该二叉树中共有_______个空指针域。
二分法查找心得

二分法查找心得
二分法查找,也称为折半查找,是一种在已排序数组中高效查找目标值的算法。
通过反复将数组一分为二,不断缩小查找范围,直到找到目标值或确定目标值不存在。
以下是我在使用二分法查找算法时的一些心得:
1. 前提条件:二分法查找要求数组必须是有序的,这是算法能够正确工作的前提。
在使用二分法查找之前,需要确保输入的数组已经按照升序或降序进行了排序。
2. 递归思想:二分法查找通过递归的方式实现,每次将数组一分为二,缩小查找范围。
理解和运用递归的思想对于理解和实现二分法查找至关重要。
3. 边界情况处理:在递归过程中,需要注意边界情况的处理。
当查找范围缩小到只有一个元素时,需要进行特殊处理,返回找到的目标值或确定目标值不存在。
4. 时间复杂度:二分法查找的时间复杂度为 O(log n),其中 n 是数组的长度。
这意味着对于大型数组,二分法查找的效率要远远高于顺序查找。
5. 空间复杂度:二分法查找的空间复杂度为 O(1),它只使用了固定的额外空间来存储中间结果,因此在空间复杂度上具有优势。
6. 应用场景:二分法查找适用于有序数组的查找操作,特别是在数组较大且需要高效查找的情况下。
它可以应用于各种领域,如数据库查询、数值计算等。
总的来说,二分法查找是一种简单而高效的算法,它充分利用了数组的有序性,通过不断缩小查找范围来提高查找效率。
在实际应用中,理解和掌握二分法查找算法可以帮助我们解决很多查找问题。
数据结构复习题1

数据结构复习题2
一、选择题(30分)
1.设一维数组中有n个数组元素,则读取第i个数组元素的平均时间复杂度为()。
(A) O(n)(B) O(nlog2n)(C) O(1)(D) O(n2)
2.设一棵二叉树的深度为k,则该二叉树中最多有()个结点。
(A) 2k-1(B) 2k(C) 2k-1(D) 2k-1
5.设哈夫曼树中共有n个结点,则该哈夫曼树中有___0_____个度数为1的结点。
6.设有向图G中有n个顶点e条有向边,所有的顶点入度数之和为d,则e和d的关系为_________。
7.__________遍历二叉排序树中的结点可以得到一个递增的关键字序列(填先序、中序或后序)。
8.设查找表中有100个元素,如果用二分法查找方法查找数据元素X,则最多需要比较________次就可以断定数据元素X是否在查找表中。
typedef struct node {datatype data; struct node *lchild,*rchild;} bitree;
bitree *q[20]; int r=0,f=0,flag=0;
void preorder(bitree *bt, char x)
{
if (bt!=0 && flag==0)
int hashsqsearch(struct record hashtable[ ],int k)
{
int i,j; j=i=k % p;
while (hashtable[j].key!=k&&hashtable[j].flag!=0){j=(____) %m; if (i==j) return(-1);}
(C)判别栈元素的类型(D)对栈不作任何判别
数据结构复习题(附答案)

数据结构复习题(附答案)1. 快速排序在最坏情况下的时间复杂度为( D )。
A.O(log2n) B.O(nlog2n) C.O (n) D. O (n2)2.设⼀棵⼆叉树的深度为k,则该⼆叉树中最多有( D )个结点。
A. 2k-1B. 2kC.2k-1D. 2k-13.⼆叉树中第i(i≥1)层上的结点数最多有( C )个。
A. 2iB. 2iC. 2i-1D. 2i-1 4.设指针变量p指向单链表结点A,则删除结点A的后继结点B需要的操作为( A )。
A. p->next=p->next->nextB. p=p->nextC. p=p->next->nextD. p->next=p5.设栈S和队列Q的初始状态为空,元素E1、E2、E3、E4、E5和E6依次通过栈S,⼀个元素出栈后即进⼊队列Q,若6个元素出列的顺序为E2、E4、E3、E6、E5和E1,则栈S的容量⾄少应该是( C )。
A. 6B. 4C. 3D. 26.设有以下四种排序⽅法,则( B )的空间复杂度最⼤。
A. 冒泡排序B. 快速排C. 堆排序D. 希尔排序7.设结点A有3个兄弟结点且结点B为结点A的双亲结点,则结点B的度数数为( B )。
A. 3B. 4C. 5D. 18.根据⼆叉树的定义可知⼆叉树共有( B )种不同的形态。
A. 4B. 5C. 6D. 79.对⼀个算法的评价,不包括如下( A )⽅⾯的内容。
A.并⾏性 B.健壮性和可读性 C.正确性 D.时空复杂度10.在⼆叉排序树中插⼊⼀个结点的时间复杂度为( C )。
A.O(1) B.O(n) C.O(log2n) D.O(n2)11. 队列是⼀种( B )的线性表。
A.先进后出B.先进先出 C.只能插⼊D.只能删除12.采⽤开放定址法处理散列表的冲突时,其平均查找长度( C )。
A.低于链接法处理冲突 B. 与链接法处理冲突相同C.⾼于链接法处理冲突 D.⾼于⼆分查找13.设有序顺序表中有n个数据元素,则利⽤⼆分查找法查找数据元素X的最多⽐较次数不超过( A )。
数据结构试题及答案

数据结构试题及答案数据结构试卷(⼗⼀)⼀、选择题(30分)1.设某⽆向图有n个顶点,则该⽆向图的邻接表中有()个表头结点。
(A) 2n (B) n (C) n/2 (D) n(n-1)2.设⽆向图G中有n个顶点,则该⽆向图的最⼩⽣成树上有()条边。
(A) n (B) n-1 (C) 2n (D) 2n-13.设⼀组初始记录关键字序列为(60,80,55,40,42,85),则以第⼀个关键字45为基准⽽得到的⼀趟快速排序结果是()。
(A) 40,42,60,55,80,85 (B) 42,45,55,60,85,80(C) 42,40,55,60,80,85 (D) 42,40,60,85,55,804.()⼆叉排序树可以得到⼀个从⼩到⼤的有序序列。
(A) 先序遍历(B) 中序遍历(C) 后序遍历(D) 层次遍历5.设按照从上到下、从左到右的顺序从1开始对完全⼆叉树进⾏顺序编号,则编号为i结点的左孩⼦结点的编号为()。
(A) 2i+1 (B) 2i (C) i/2 (D) 2i-16.程序段s=i=0;do {i=i+1; s=s+i;}while(i<=n);的时间复杂度为()。
(A) O(n) (B) O(nlog2n) (C) O(n2) (D) O(n3/2)7.设带有头结点的单向循环链表的头指针变量为head,则其判空条件是()。
(A) head==0 (B) head->next==0(C) head->next==head (D) head!=08.设某棵⼆叉树的⾼度为10,则该⼆叉树上叶⼦结点最多有()。
(A) 20 (B) 256 (C) 512 (D) 10249.设⼀组初始记录关键字序列为(13,18,24,35,47,50,62,83,90,115,134),则利⽤⼆分法查找关键字90需要⽐较的关键字个数为()。
(A) 1 (B) 2 (C) 3 (D) 410.设指针变量top指向当前链式栈的栈顶,则删除栈顶元素的操作序列为()。
《数据结构》填空作业题(答案)

《数据结构》填空作业题答案第1章绪论(已校对无误)1.数据结构包括数据的逻辑结构、数据的存储结构和数据的运算三方面的内容。
2.程序包括两个内容:数据结构和算法。
3. 数据结构的形式定义为:数据结构是一个二元组:Data Structure =(D,S)。
4. 数据的逻辑结构在计算机存储器内的表示,称为数据的存储结构。
5. 数据的逻辑结构可以分类为线性结构和非线性结构两大类。
6. 在图状结构中,每个结点的前驱结点数和后继结点数可以有多个。
7. 在树形结构中,数据元素之间存在一对多的关系。
8. 数据的物理结构,指数据元素在计算机中的标识(映象),也即存储结构。
9. 数据的逻辑结构包括线性结构、树形结构和图形结构3种类型,树型结构和有向图结构合称为非线性结构。
10. 顺序存储结构是把逻辑上相邻的结点存储在物理上连续的存储单元里,结点之间的逻辑关系由存储单元位置的邻接关系来体现。
11. 链式存储结构是把逻辑上相邻的结点存储在物理上任意的存储单元里,节点之间的逻辑关系由附加的指针域来体现。
12. 数据的存储结构可用4种基本的存储方法表示,它们分别是顺序存储、链式存储、索引存储和散列存储。
13. 线性结构反映结点间的逻辑关系是一对一的,非线性结构反映结点间的逻辑关系是一对多或多对多。
14. 数据结构在物理上可分为顺序存储结构和链式存储结构。
15. 我们把每种数据结构均视为抽象类型,它不但定义了数据的表示方式,还给出了处理数据的实现方法。
16. 数据元素可由若干个数据项组成。
17. 算法分析的两个主要方面是时间复杂度和空间复杂度。
18. 一个算法的时间复杂度是用该算法所消耗的时间的多少来度量的,一个算法的空间复杂度是用该算法在运行过程中所占用的存储空间的大小来度量的。
19. 算法具有如下特点:有穷性、确定性、可行性、输入、输出。
20. 对于某一类特定的问题,算法给出了解决问题的一系列操作,每一操作都有它的确切的定义,并在有穷时间内计算出结果。
二分法 查找

二分法查找
二分查找也称折半查找(Binary Search),是一种在有序数组中查找目标值的算法。
它的基本思想是将数组分为两部分,然后判断目标值可能存在的那一部分,并继续在该部分中进行查找,以此逐渐缩小查找范围,直到找到目标值或确定不存在。
二分查找的基本实现步骤如下:
1. 确定数组的左边界和右边界,初始时左边界为0,右边界为数组长度减1。
2. 计算数组的中间位置mid,可以使用公式mid = (left + right) / 2。
3. 比较中间位置的元素与目标值的大小关系:
- 如果中间位置的元素等于目标值,则找到目标值,返回中间位置。
- 如果中间位置的元素大于目标值,则目标值可能在左侧部分,更新右边界为mid - 1。
- 如果中间位置的元素小于目标值,则目标值可能在右侧部分,更新左边界为mid + 1。
二分查找虽然思路简单,但在实现过程中需要注意细节,如循环中的不等号是否应该带等号,mid是否应该加一等。
分析这些细节的差异以及出现这些差异的原因,有助于更加灵活准确地实现二分查找算法。
数据结构填空题大全

数据结构填空题大全二、二、 填空题(每题填空题(每题 6 分,共24分)分) 1. 数据结构是指数据及其相互之间的数据结构是指数据及其相互之间的 联系联系 。
当结点之间存在M 对N (M :N )的联系时,称这种结构为时,称这种结构为 图或者是图的结构图或者是图的结构2. 队列的插入操作是在队列的队列的插入操作是在队列的 尾 进行,删除操作是在队列的进行,删除操作是在队列的 首 进行。
进行。
3. 当用长度为N 的数组顺序存储一个栈时,的数组顺序存储一个栈时,假定用假定用top==N 表示栈空,表示栈空,则表示栈满的条件是则表示栈满的条件是则表示栈满的条件是 top==0 (要超出才为满)。
4. 对于一个长度为n 的单链存储的线性表,在表头插入元素的时间复杂度为的单链存储的线性表,在表头插入元素的时间复杂度为 O(1) ,在表尾插入元素的时间复杂度为尾插入元素的时间复杂度为 O(n) 。
5. 设W 为一个二维数组,其每个数据元素占用4个字节,个字节,行下标行下标i 从0到7 ,列下标j 从0到3 ,则二维数组W 的数据元素共占用的数据元素共占用 128 个字节。
W 中第6 行的元素和第4 列的元素共占用共占用 44 个字节。
若按行顺序存放二维数组W ,其起始地址为100,则二维数组元素W[6,3]的起始地址为的起始地址为 108 。
6.广义表A= (a,(a,b),((a,b),c)),则它的深度为则它的深度为则它的深度为 3 ,它的长度为,它的长度为 3 。
7. 二叉树是指度为2的 有序有序 树。
一棵结点数为N 的二叉树,其所有结点的度的总和是的二叉树,其所有结点的度的总和是 n-1 。
8. 对一棵二叉搜索树进行中序遍历时,得到的结点序列是一个有序序列对一棵二叉搜索树进行中序遍历时,得到的结点序列是一个有序序列 有序列表有序列表 。
对一棵由算术表达式组成的二叉语法树进行后序遍历得到的结点序列是该算术表达式的_后缀表达式后缀表达式(或列波兰式)。
《数据结构》填空作业题(答案)

《数据结构》填空作业题答案第1章绪论(已校对无误)1.数据结构包括数据的逻辑结构、数据的存储结构和数据的运算三方面的内容。
2.程序包括两个内容:数据结构和算法。
3. 数据结构的形式定义为:数据结构是一个二元组:Data Structure =(D,S)。
4. 数据的逻辑结构在计算机存储器内的表示,称为数据的存储结构。
5. 数据的逻辑结构可以分类为线性结构和非线性结构两大类。
6. 在图状结构中,每个结点的前驱结点数和后继结点数可以有多个。
7. 在树形结构中,数据元素之间存在一对多的关系。
8. 数据的物理结构,指数据元素在计算机中的标识(映象),也即存储结构。
9. 数据的逻辑结构包括线性结构、树形结构和图形结构3种类型,树型结构和有向图结构合称为非线性结构。
10. 顺序存储结构是把逻辑上相邻的结点存储在物理上连续的存储单元里,结点之间的逻辑关系由存储单元位置的邻接关系来体现。
11. 链式存储结构是把逻辑上相邻的结点存储在物理上任意的存储单元里,节点之间的逻辑关系由附加的指针域来体现。
12. 数据的存储结构可用4种基本的存储方法表示,它们分别是顺序存储、链式存储、索引存储和散列存储。
13. 线性结构反映结点间的逻辑关系是一对一的,非线性结构反映结点间的逻辑关系是一对多或多对多。
14. 数据结构在物理上可分为顺序存储结构和链式存储结构。
15. 我们把每种数据结构均视为抽象类型,它不但定义了数据的表示方式,还给出了处理数据的实现方法。
16. 数据元素可由若干个数据项组成。
17. 算法分析的两个主要方面是时间复杂度和空间复杂度。
18. 一个算法的时间复杂度是用该算法所消耗的时间的多少来度量的,一个算法的空间复杂度是用该算法在运行过程中所占用的存储空间的大小来度量的。
19. 算法具有如下特点:有穷性、确定性、可行性、输入、输出。
20. 对于某一类特定的问题,算法给出了解决问题的一系列操作,每一操作都有它的确切的定义,并在有穷时间内计算出结果。
数据结构试卷带答案

数据结构试卷一一、选择题20分1.组成数据的基本单位是;A 数据项B 数据类型C 数据元素D 数据变量2.设数据结构A=D,R,其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},则数据结构A是 C ;A 线性结构B 树型结构C 图型结构D 集合3.数组的逻辑结构不同于下列D的逻辑结构;A 线性表B 栈C 队列D 树4.二叉树中第ii≥1层上的结点数最多有C个;A 2iB 2iC 2i-1D 2i-15.设指针变量p指向单链表结点A,则删除结点A的后继结点B需要的操作为.A ;A p->next=p->next->nextB p=p->nextC p=p->next->nextD p->next=p6.设栈S和队列Q的初始状态为空,元素E1、E2、E3、E4、E5和E6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出列的顺序为E2、E4、E3、E6、E5和E1,则栈S的容量至少应该是.C ;A 6B 4C 3D 27.将10阶对称矩阵压缩存储到一维数组A中,则数组A的长度最少为C ;A 100B 40C 55D 808.设结点A有3个兄弟结点且结点B为结点A的双亲结点,则结点B的度数数为A 3B 4C 5D 19.根据二叉树的定义可知二叉树共有 B种不同的形态;A 4B 5C 6D 710.设有以下四种排序方法,则 B 的空间复杂度最大;A 冒泡排序B 快速排序C 堆排序D 希尔排序二、填空题30分1.设顺序循环队列Q0:m-1的队头指针和队尾指针分别为F和R,其中队头指针F指向当前队头元素的前一个位置,队尾指针R指向当前队尾元素所在的位置,则出队列的语句为F =____________;;2.设线性表中有n个数据元素,则在顺序存储结构上实现顺序查找的平均时间复杂度为___________,在链式存储结构上实现顺序查找的平均时间复杂度为___________;3.设一棵二叉树中有n个结点,则当用二叉链表作为其存储结构时,该二叉链表中共有________个指针域,__________个空指针域;4.设指针变量p指向单链表中结点A,指针变量s指向被插入的结点B,则在结点A的后面插入结点B的操作序列为______________________________________;5.设无向图G中有n个顶点和e条边,则其对应的邻接表中有_________个表头结点和_________个表结点;6.设无向图G中有n个顶点e条边,所有顶点的度数之和为m,则e和m有______关系;7.设一棵二叉树的前序遍历序列和中序遍历序列均为ABC,则该二叉树的后序遍历序列为__________;8.设一棵完全二叉树中有21个结点,如果按照从上到下、从左到右的顺序从1开始顺序编号,则编号为8的双亲结点的编号是___________,编号为8的左孩子结点的编号是_____________;9.下列程序段的功能实现子串t在主串s中位置的算法,要求在下划线处填上正确语句;int indexchar s , char t{i=j=0;whilei<strlens && j<strlent ifsi==tj{i=i+l; j=j+l;}else{i=_______; j=______;}if j==strlentreturni-strlent;else return -1;}10. 设一个连通图G 中有n 个顶点e 条边,则其最小生成树上有________条边;三、应用题30分1.设完全二叉树的顺序存储结构中存储数据ABCDE,要求给出该二叉树的链式存储结构并给出该二叉树的前序、中序和后序遍历序列;2.设给定一个权值集合W=3,5,7,9,11,要求根据给定的权值集合构造一棵哈夫曼树并计算哈夫曼树的带权路径长度WPL;3.设一组初始记录关键字序列为19,21,16,5,18,23,要求给出以19为基准的一趟快速排序结果以及第2趟直接选择排序后的结果;4.设一组初始记录关键字集合为25,10,8,27,32,68,散列表的长度为8,散列函数Hk=k mod 7,要求分别用线性探测和链地址法作为解决冲突的方法设计哈希表;5.设无向图G 所右图所示,要求给出该图的深度优先和广度优先遍历的序列并给出该图的最小生成树;四、算法设计题20分1. 设计判断单链表中结点是否关于中心对称算法;2. 设计在链式存储结构上建立一棵二叉树的算法;3. 设计判断一棵二叉树是否是二叉排序树的算法;数据结构试卷一参考答案一、选择题二、填空题1. F+1 % m2. On,On3. 2n,n+14. s->next=p->next; p->next=s5. n, 2e6. m=2e7. CBA8. 4,169. i-j+1,010. n-1三、应用题1. 链式存储结构略,前序ABDEC,中序DBEAC,后序DEBCA;2. 哈夫曼树略,WPL=783. 18,5,16,19,21,23,5,16,21,19,18,234. 线性探测:6827322510876543210ΛΛ 链地址法:276832251086543210>->->->->->-h h h h h h h5. 深度:125364,广度:123456,最小生成树T 的边集为E={1,4,1,3,3,5,5,6,5,6}四、算法设计题1. 设计判断单链表中结点是否关于中心对称算法;typedef struct {int s100; int top;} sqstack;int lklistsymmetrylklist head{sqstack stack; = -1; lklist p;forp=head;p=0;p=p->next {++; =p->data;}forp=head;p=0;p=p->next if p->data== =; else return0;return1;}2.设计在链式存储结构上建立一棵二叉树的算法;typedef char datatype;typedef struct node {datatype data; struct node lchild,rchild;} bitree;void createbitreebitree &bt{char ch; scanf"%c",&ch;ifch=='' {bt=0; return;}bt=bitreemallocsizeofbitree; bt->data=ch;createbitreebt->lchild; createbitreebt->rchild;}3.设计判断一棵二叉树是否是二叉排序树的算法;int minnum=-32768,flag=1;typedef struct node{int key; struct node lchild,rchild;}bitree;void inorderbitree bt{if bt=0{inorderbt->lchild; ifminnum>bt->keyflag=0; minnum=bt->key; inorderbt->rchild;}}数据结构试卷二一、选择题24分1.下面关于线性表的叙述错误的是.DA 线性表采用顺序存储必须占用一片连续的存储空间B 线性表采用链式存储不必占用一片连续的存储空间C 线性表采用链式存储便于插入和删除操作的实现D 线性表采用顺序存储便于插入和删除操作的实现2.设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中总共有个空指针域;A 2m-1B 2mC 2m+1D 4m3.设顺序循环队列Q0:M-1的头指针和尾指针分别为F和R,头指针F总是指向队头元素的前一位置,尾指针R总是指向队尾元素的当前位置,则该循环队列中的元素个数为 ;A R-FB F-RC R-F+M%MD F-R+M%M4.设某棵二叉树的中序遍历序列为ABCD,前序遍历序列为CABD,则后序遍历该二叉树得到序列为;A BADCB BCDAC CDABD CBDA5.设某完全无向图中有n个顶点,则该完全无向图中有条边;A nn-1/2B nn-1C n2D n2-16.设某棵二叉树中有2000个结点,则该二叉树的最小高度为C;A 9B 10C 11D 127.设某有向图中有n 个顶点,则该有向图对应的邻接表中有B 个表头结点;A n-1B nC n+1D 2n-18.设一组初始记录关键字序列5,2,6,3,8,以第一个记录关键字5为基准进行一趟快速排序的结果为 ;A 2,3,5,8,6B 3,2,5,8,6C 3,2,5,6,8D 2,3,6,5,8二、填空题24分1. 为了能有效地应用HASH 查找技术,必须解决的两个问题是____构造一个好的HASH 函数________________和_确定解决冲突的方法________________________;2. 下面程序段的功能实现数据x 进栈,要求在下划线处填上正确的语句;typedef struct {int s100; int top;} sqstack;void pushsqstack &stack,int x{if ==m-1 printf“overflow”;else {____________________;_________________;}}3. 中序遍历二叉排序树所得到的序列是___________序列填有序或无序;4. 快速排序的最坏时间复杂度为___________,平均时间复杂度为__________;5. 设某棵二叉树中度数为0的结点数为N 0,度数为1的结点数为N 1,则该二叉树中度数为2的结点数为_________;若采用二叉链表作为该二叉树的存储结构,则该二叉树中共有_______个空指针域;6. 设某无向图中顶点数和边数分别为n 和e,所有顶点的度数之和为d,则e=_______;7. 设一组初始记录关键字序列为55,63,44,38,75,80,31,56,则利用筛选法建立的初始堆为___________________________;8. 设某无向图G 的邻接表为31241314234321>->->->->->->->->->-v v v v ,则从顶点V 1开始的深度优先遍历序列为___________;广度优先遍历序列为____________;三、应用题36分1. 设一组初始记录关键字序列为45,80,48,40,22,78,则分别给出第4趟简单选择排序和第4趟直接插入排序后的结果;2. 设指针变量p 指向双向链表中结点A,指针变量q 指向被插入结点B,要求给出在结点A 的后面插入结点B 的操作序列设双向链表中结点的两个指针域分别为llink 和rlink;3. 设一组有序的记录关键字序列为13,18,24,35,47,50,62,83,90,查找方法用二分查找,要求计算出查找关键字62时的比较次数并计算出查找成功时的平均查找长度;4. 设一棵树T 中边的集合为{A,B,A,C,A,D,B,E,C,F,C,G},要求用孩子兄弟表示法二叉链表表示出该树的存储结构并将该树转化成对应的二叉树;5. 设有无向图G 如右图所示,要求给出用普里姆算法构造最小生成树所走过的边的集合;6. 设有一组初始记录关键字为45,80,48,40,22,78,要求构造一棵二叉排序树并给出构造过程;四、算法设计题16分1. 设有一组初始记录关键字序列K 1,K 2,…,K n ,要求设计一个算法能够在On 的时间复杂度内将线性表划分成两部分,其中左半部分的每个关键字均小于K i ,右半部分的每个关键字均大于等于K i ;2. 设有两个集合A 和集合B,要求设计生成集合C=A ∩B 的算法,其中集合A 、B 和C 用链式存储结构表示;数据结构试卷二参考答案一、选择题二、填空题1.构造一个好的HASH函数,确定解决冲突的方法2.++,=x3.有序4.On2,Onlog2n5.N0-1,2N0+N16.d/27.31,38,54,56,75,80,55,638.1,3,4,2,1,3,2,4三、应用题1.22,40,45,48,80,78,40,45,48,80,22,782.q->llink=p; q->rlink=p->rlink; p->rlink->llink=q; p->rlink=q;3.2,ASL=911+22+34+42=25/94.树的链式存储结构略,二叉树略5.E={1,3,1,2,3,5,5,6,6,4}6.略四、算法设计题1.设有一组初始记录关键字序列K1,K2,…,K n,要求设计一个算法能够在On的时间复杂度内将线性表划分成两部分,其中左半部分的每个关键字均小于K i,右半部分的每个关键字均大于等于K i;void quickpassint r, int s, int t{int i=s, j=t, x=rs;whilei<j{while i<j && rj>x j=j-1; if i<j {ri=rj;i=i+1;}while i<j && ri<x i=i+1; if i<j {rj=ri;j=j-1;}}ri=x;}2.设有两个集合A和集合B,要求设计生成集合C=A∩B的算法,其中集合A、B和C用链式存储结构表示;typedef struct node {int data; struct node next;}lklist;void intersectionlklist ha,lklist hb,lklist &hc{lklist p,q,t;forp=ha,hc=0;p=0;p=p->next{ forq=hb;q=0;q=q->next if q->data==p->data break;ifq=0{ t=lklist mallocsizeoflklist; t->data=p->data;t->next=hc; hc=t;}}}数据结构试卷三一、选择题30分1.设某数据结构的二元组形式表示为A=D,R,D={01,02,03,04,05,06,07,08,09},R={r},r={<01,02>,<01,03>,<01,04>,<02,05>,<02,06>,<03,07>,< 03,08>,<03,09>},则数据结构A是 B ;A 线性结构B 树型结构C 物理结构D 图型结构2.下面程序的时间复杂为Bfori=1,s=0;i<=n;i++ {t=1;forj=1;j<=i;j++ t=tj;s=s+t;}A O nB On2C On3D On43.设指针变量p指向单链表中结点A,若删除单链表中结点A,则需要修改指针的操作序列为A ;A q=p->next;p->data=q->data;p->next=q->next;freeq;B q=p->next;q->data=p->data;p->next=q->next;freeq;C q=p->next;p->next=q->next;freeq;D q=p->next;p->data=q->data;freeq;4.设有n个待排序的记录关键字,则在堆排序中需要 A 个辅助记录单元;A 1B nC nlog2nD n25.设一组初始关键字记录关键字为20,15,14,18,21,36,40,10,则以20为基准记录的一趟快速排序结束后的结果为 A ;A 10,15,14,18,20,36,40,21B 10,15,14,18,20,40,36,21C 10,15,14,20,18,40,36,2lD 15,10,14,18,20,36,40,216.设二叉排序树中有n个结点,则在二叉排序树的平均平均查找长度为 B ;A O1B Olog2n COn D On27.设无向图G中有n个顶点e条边,则其对应的邻接表中的表头结点和表结点的个数分别为 D ;A n,eB e,nC 2n,eD n,2e8. 设某强连通图中有n个顶点,则该强连通图中至少有 C 条边;A nn-1B n+1C nD nn+19.设有5000个待排序的记录关键字,如果需要用最快的方法选出其中最小的10个记录关键字,则用下列 B 方法可以达到此目的;A 快速排序B 堆排序C 归并排序D 插入排序10.下列四种排序中 D 的空间复杂度最大;A 插入排序B 冒泡排序C 堆排序D 归并排序二、填空殖48分,其中最后两小题各6分1.数据的物理结构主要包括_____________和______________两种情况;2.设一棵完全二叉树中有500个结点,则该二叉树的深度为____9______;若用二叉链表作为该完全二叉树的存储结构,则共有___501________个空指针域;3.设输入序列为1、2、3,则经过栈的作用后可以得到_____5______种不同的输出序列;4.设有向图G用邻接矩阵Ann作为存储结构,则该邻接矩阵中第i行上所有元素之和等于顶点i的__出度______,第i列上所有元素之和等于顶点i的____入度____;5.设哈夫曼树中共有n个结点,则该哈夫曼树中有____0____个度数为1的结点;6.设有向图G中有n个顶点e条有向边,所有的顶点入度数之和为d,则e和d的关系为__e=d_______;7.___中序_______遍历二叉排序树中的结点可以得到一个递增的关键字序列填先序、中序或后序;8.设查找表中有100个元素,如果用二分法查找方法查找数据元素X,则最多需要比较____7____次就可以断定数据元素X是否在查找表中;9.不论是顺序存储结构的栈还是链式存储结构的栈,其入栈和出栈操作的时间复杂度均为__On_________;10.设有n个结点的完全二叉树,如果按照从自上到下、从左到右从1开始顺序编号,则第i个结点的双亲结点编号为_i/2___________,右孩子结点的编号为___2i+1________;11.设一组初始记录关键字为72,73,71,23,94,16,5,则以记录关键字72为基准的一趟快速排序结果为__5,16,23,71,72,73,94_________________________;12.设有向图G中有向边的集合E={<1,2>,<2,3>,<1,4>,<4,2>,<4,3>},则该图的一种拓扑序列为__1,4,2,3__________________;13.下列算法实现在顺序散列表中查找值为x的关键字,请在下划线处填上正确的语句;struct record{int key; int others;};int hashsqsearchstruct record hashtable ,int k{int i,j; j=i=k % p;while hashtablej.key=k&&hashtablej.flag=0{j=_j+1___ %m; if i==j return-1;}if _______________________ returnj; else return-1;}14.下列算法实现在二叉排序树上查找关键值k,请在下划线处填上正确的语句;typedef struct node{int key; struct node lchild; struct node rchild;}bitree;bitree bstsearchbitree t, int k{if t==0 return0;else while t=0if t->key==k_____________; else if t->key>k t=t->lchild; else_____________;}三、算法设计题22分1.设计在单链表中删除值相同的多余结点的算法;2.设计一个求结点x在二叉树中的双亲结点算法;数据结构试卷三参考答案一、选择题第3小题分析:首先用指针变量q指向结点A的后继结点B,然后将结点B的值复制到结点A中,最后删除结点B;第9小题分析:9快速排序、归并排序和插入排序必须等到整个排序结束后才能够求出最小的10个数,而堆排序只需要在初始堆的基础上再进行10次筛选即可,每次筛选的时间复杂度为Olog2n;二、填空题1.顺序存储结构、链式存储结构2.9,5013. 54.出度,入度5.06.e=d7.中序8.79.O110.i/2,2i+111.5,16,71,23,72,94,7312.1,4,3,213.j+1,hashtablej.key==k14.returnt,t=t->rchild第8小题分析:二分查找的过程可以用一棵二叉树来描述,该二叉树称为二叉判定树;在有序表上进行二分查找时的查找长度不超过二叉判定树的高度1+log2n;三、算法设计题1.设计在单链表中删除值相同的多余结点的算法;typedef int datatype;typedef struct node {datatype data; struct node next;}lklist;void delredundantlklist &head{lklist p,q,s;forp=head;p=0;p=p->next{forq=p->next,s=q;q=0;if q->data==p->data {s->next=q->next; freeq;q=s->next;}else {s=q,q=q->next;}}}2.设计一个求结点x在二叉树中的双亲结点算法;typedef struct node {datatype data; struct node lchild,rchild;} bitree;bitree q20; int r=0,f=0,flag=0;void preorderbitree bt, char x{if bt=0 && flag==0if bt->data==x { flag=1; return;}else {r=r+1% 20; qr=bt; preorderbt->lchild,x; preorderbt->rchild,x; }}void parentbitree bt,char x{int i;preorderbt,x;fori=f+1; i<=r; i++ if qi->lchild->data==x || qi->rchild->data break;if flag==0 printf"not found x\n";else if i<=r printf"%c",bt->data; else printf"not parent";}数据结构试卷四一、选择题30分1.设一维数组中有n个数组元素,则读取第i个数组元素的平均时间复杂度为 ;A OnB Onlog2nC O1D On22.设一棵二叉树的深度为k,则该二叉树中最多有个结点;A 2k-1B 2kC 2k-1D 2k-13.设某无向图中有n个顶点e条边,则该无向图中所有顶点的入度之和为 ;A nB eC 2nD 2e4.在二叉排序树中插入一个结点的时间复杂度为 ;A O1B OnC Olog2nD On25.设某有向图的邻接表中有n个表头结点和m个表结点,则该图中有条有向边;A nB n-1C mD m-16.设一组初始记录关键字序列为345,253,674,924,627,则用基数排序需要进行趟的分配和回收才能使得初始关键字序列变成有序序列;A 3B 4C 5D 87.设用链表作为栈的存储结构则退栈操作 ;A 必须判别栈是否为满B 必须判别栈是否为空C 判别栈元素的类型D 对栈不作任何判别8.下列四种排序中的空间复杂度最大;A 快速排序B 冒泡排序C 希尔排序D 堆9.设某二叉树中度数为0的结点数为N0,度数为1的结点数为N l,度数为2的结点数为N2,则下列等式成立的是 ;A N0=N1+1B N0=N l+N2C N0=N2+1D N0=2N1+l10.设有序顺序表中有n个数据元素,则利用二分查找法查找数据元素X的最多比较次数不超过 ;A log2n+1B log2n-1C log2nD log2n+1二、填空题42分1.设有n个无序的记录关键字,则直接插入排序的时间复杂度为________,快速排序的平均时间复杂度为_________;2.设指针变量p指向双向循环链表中的结点X,则删除结点X需要执行的语句序列为_________________________________________________________设结点中的两个指针域分别为llink和rlink;3.根据初始关键字序列19,22,01,38,10建立的二叉排序树的高度为____________;4.深度为k的完全二叉树中最少有____________个结点;5.设初始记录关键字序列为K1,K2,…,K n,则用筛选法思想建堆必须从第______个元素开始进行筛选; 6.设哈夫曼树中共有99个结点,则该树中有_________个叶子结点;若采用二叉链表作为存储结构,则该树中有_____个空指针域;7.设有一个顺序循环队列中有M个存储单元,则该循环队列中最多能够存储________个队列元素;当前实际存储________________个队列元素设头指针F指向当前队头元素的前一个位置,尾指针指向当前队尾元素的位置;8.设顺序线性表中有n个数据元素,则第i个位置上插入一个数据元素需要移动表中_______个数据元素;删除第i个位置上的数据元素需要移动表中_______个元素;9.设一组初始记录关键字序列为20,18,22,16,30,19,则以20为中轴的一趟快速排序结果为______________________________;10.设一组初始记录关键字序列为20,18,22,16,30,19,则根据这些初始关键字序列建成的初始堆为________________________;11.设某无向图G中有n个顶点,用邻接矩阵A作为该图的存储结构,则顶点i和顶点j互为邻接点的条件是______________________;12.设无向图对应的邻接矩阵为A,则A中第i上非0元素的个数_________第i列上非0元素的个数填等于,大于或小于;13.设前序遍历某二叉树的序列为ABCD,中序遍历该二叉树的序列为BADC,则后序遍历该二叉树的序列为_____________;14.设散列函数Hk=k mod p,解决冲突的方法为链地址法;要求在下列算法划线处填上正确的语句完成在散列表hashtalbe中查找关键字值等于k的结点,成功时返回指向关键字的指针,不成功时返回标志0;typedef struct node {int key; struct node next;} lklist;void createlkhashlklist hashtable{int i,k; lklist s;fori=0;i<m;i++_____________________;fori=0;i<n;i++{s=lklist mallocsizeoflklist; s->key=ai;k=ai % p; s->next=hashtablek;_______________________;}}三、算法设计题28分1.设单链表中有仅三类字符的数据元素大写字母、数字和其它字符,要求利用原单链表中结点空间设计出三个单链表的算法,使每个单链表只包含同类字符;2.设计在链式存储结构上交换二叉树中所有结点左右子树的算法;3.在链式存储结构上建立一棵二叉排序树;数据结构试卷四参考答案一、选择题1.C 2.D 3.D 4.B 5.C 6.A 7.B 9.C 10.A二、填空题1.On2,Onlog2n2.p>llink->rlink=p->rlink; p->rlink->llink=p->rlink3. 34.2k-15.n/26.50,517.m-1,R-F+M%M8.n+1-i,n-i9.19,18,16,20,30,2210.16,18,19,20,32,2211.Aij=112.等于13.BDCA14.hashtablei=0,hashtablek=s三、算法设计题1.设单链表中有仅三类字符的数据元素大写字母、数字和其它字符,要求利用原单链表中结点空间设计出三个单链表的算法,使每个单链表只包含同类字符;typedef char datatype;typedef struct node {datatype data; struct node next;}lklist;void splitlklist head,lklist &ha,lklist &hb,lklist &hc{lklist p; ha=0,hb=0,hc=0;forp=head;p=0;p=head{head=p->next; p->next=0;if p->data>='A' && p->data<='Z' {p->next=ha; ha=p;}else if p->data>='0' && p->data<='9' {p->next=hb; hb=p;} else {p->next=hc; hc=p;}}}2.设计在链式存储结构上交换二叉树中所有结点左右子树的算法;typedef struct node {int data; struct node lchild,rchild;} bitree;void swapbitreebitree bt{bitree p;ifbt==0 return;swapbitreebt->lchild; swapbitreebt->rchild;p=bt->lchild; bt->lchild=bt->rchild; bt->rchild=p;}3.在链式存储结构上建立一棵二叉排序树;define n 10typedef struct node{int key; struct node lchild,rchild;}bitree;void bstinsertbitree &bt,int key{if bt==0{bt=bitree mallocsizeofbitree; bt->key=key;bt->lchild=bt->rchild=0;}else if bt->key>key bstinsertbt->lchild,key; else bstinsertbt->rchild,key;}void createbsttreebitree &bt{int i;fori=1;i<=n;i++ bstinsertbt,random100;}数据结构试卷五一、选择题30分1.数据的最小单位是 A ;A 数据项B 数据类型C 数据元素D 数据变量2.设一组初始记录关键字序列为50,40,95,20,15,70,60,45,则以增量d=4的一趟希尔排序结束后前4条记录关键字为 ;A 40,50,20,95B 15,40,60,20C 15,20,40,45D 45,40,15,203.设一组初始记录关键字序列为25,50,15,35,80,85,20,40,36,70,其中含有5个长度为2的有序子表,则用归并排序的方法对该记录关键字序列进行一趟归并后的结果为;A 15,25,35,50,20,40,80,85,36,70B 15,25,35,50,80,20,85,40,70,36C 15,25,35,50,80,85,20,36,40,70D 15,25,35,50,80,20,36,40,70,854.函数subs tr“DATASTRUCTURE”,5,9的返回值为 ;A “STRUCTURE”B “DATA”C “ASTRUCTUR”D “DATASTRUCTURE”5.设一个有序的单链表中有n个结点,现要求插入一个新结点后使得单链表仍然保持有序,则该操作的时间复杂度为 ;A Olog2nB O1C On2D On6.设一棵m叉树中度数为0的结点数为N0,度数为1的结点数为N l,……,度数为m的结点数为Nm,则N0= ;A N l+N2+……+NmB l+N2+2N3+3N4+……+m-1NmC N2+2N3+3N4+……+m-1NmD 2N l+3N2+……+m+1Nm7.设有序表中有1000个元素,则用二分查找查找元素X最多需要比较次;A 25B 10C 7D 18.设连通图G中的边集E={a,b,a,e,a,c,b,e,e,d,d,f,f,c},则从顶点a出发可以得到一种深度优先遍历的顶点序列为 ;A abedfcB acfebdC aebdfcD aedfcb9.设输入序列是1、2、3、……、n,经过栈的作用后输出序列的第一个元素是n,则输出序列中第i个输出元素是 ;A n-iB n-1-iC n+1-iD 不能确定10 设一组初始记录关键字序列为45,80,55,40,42,85,则以第一个记录关键字45为基准而得到一趟快速排序的结果是 C ;A 40,42,45,55,80,83B 42,40,45,80,85,88C 42,40,45,55,80,85D 42,40,45,85,55,80二、填空题共30分1.设有一个顺序共享栈S0:n-1,其中第一个栈项指针top1的初值为-1,第二个栈顶指针top2的初值为n,则判断共享栈满的条件是____________________;2.在图的邻接表中用顺序存储结构存储表头结点的优点是____________________;3.设有一个n阶的下三角矩阵A,如果按照行的顺序将下三角矩阵中的元素包括对角线上元素存放在nn+1个连续的存储单元中,则Aij与A00之间有_______个数据元素;4.栈的插入和删除只能在栈的栈顶进行,后进栈的元素必定先出栈,所以又把栈称为__________表;队列的插入和删除运算分别在队列的两端进行,先进队列的元素必定先出队列,所以又把队列称为_________表;5.设一棵完全二叉树的顺序存储结构中存储数据元素为ABCDEF,则该二叉树的前序遍历序列为___________,中序遍历序列为___________,后序遍历序列为___________;6.设一棵完全二叉树有128个结点,则该完全二叉树的深度为________,有__________个叶子结点;7.设有向图G的存储结构用邻接矩阵A来表示,则A中第i行中所有非零元素个数之和等于顶点i的________,第i列中所有非零元素个数之和等于顶点i的__________;8.设一组初始记录关键字序列k1,k2,……,k n是堆,则对i=1,2,…,n/2而言满足的条件为_______________________________;9.下面程序段的功能是实现冒泡排序算法,请在下划线处填上正确的语句;void bubbleint rn{fori=1;i<=n-1; i++{forexchange=0,j=0; j<_____________;j++if rj>rj+1{temp=rj+1;______________;rj=temp;exchange=1;}if exchange==0 return;}}10.下面程序段的功能是实现二分查找算法,请在下划线处填上正确的语句;struct record{int key; int others;};int bisearchstruct record r , int k{int low=0,mid,high=n-1;whilelow<=high{________________________________;ifrmid.key==k returnmid+1; else if____________ high=mid-1;else low=mid+1;}return0;}三、应用题24分1.设某棵二叉树的中序遍历序列为DBEAC,前序遍历序列为ABDEC,要求给出该二叉树的的后序遍历序列;2.设无向图G如右图所示,给出该图的最小生成树上边的集合并计算最小生成树各边上的权值之和;3.设一组初始记录关键字序列为15,17,18,22,35,51,60,要求计算出成功查找时的平均查找长度;4.设散列表的长度为8,散列函数Hk=k mod 7,初始记录关键字序列为25,31,8,27,13,68,要求分别计算出用线性探测法和链地址法作为解决冲突方法的平均查找长度;四、算法设计题16分1.设计判断两个二叉树是否相同的算法;2.设计两个有序单链表的合并排序算法;数据结构试卷五参考答案一、选择题1.A 2.B 3.A 4.A 5.D 6.B 7.B 8.B 9.C 10.C二、填空题1.top1+1=top22.可以随机访问到任一个顶点的简单链表3.ii+1/2+j-14.FILO,FIFO5.ABDECF,DBEAFC,DEBFCA6.8,647.出度,入度8.k i<=k2i && k i<=k2i+19.n-i,rj+1=rj10.mid=low+high/2,rmid.key>k三、应用题1.DEBCA2.E={1,5,5,2,5,3,3,4},W=103.ASL=11+22+34/7=17/74.ASL1=7/6,ASL2=4/3四、算法设计题1.设计判断两个二叉树是否相同的算法;typedef struct node {datatype data; struct node lchild,rchild;} bitree;int judgebitreebitree bt1,bitree bt2{if bt1==0 && bt2==0 return1;else if bt1==0 || bt2==0 ||bt1->data=bt2->data return0;else returnjudgebitreebt1->lchild,bt2->lchildjudgebitreebt1->rchild,bt2->rchild;}2.设计两个有序单链表的合并排序算法;void mergelklistlklist ha,lklist hb,lklist &hc{lklist s=hc=0;whileha=0 && hb=0ifha->data<hb->data{ifs==0 hc=s=ha; else {s->next=ha; s=ha;};ha=ha->next;}else {ifs==0 hc=s=hb; else {s->next=hb; s=hb;};hb=hb->next;}ifha==0 s->next=hb; else s->next=ha;}数据结构试卷六一、选择题30分1.设一组权值集合W={2,3,4,5,6},则由该权值集合构造的哈夫曼树中带权路径长度之和为 ;A 20B 30C 40D 452.执行一趟快速排序能够得到的序列是 ;A 41,12,34,45,27 55 72,63B 45,34,12,41 55 72,63,27C 63,12,34,45,27 55 41,72D 12,27,45,41 55 34,63,723.设一条单链表的头指针变量为head且该链表没有头结点,则其判空条件是;A head==0B head->next==0C head->next==headD head=04.时间复杂度不受数据初始状态影响而恒为Onlog2n的是 ;A 堆排序B 冒泡排序C 希尔排序D 快速排序5.设二叉树的先序遍历序列和后序遍历序列正好相反,则该二叉树满足的条件是 ;A 空或只有一个结点B 高度等于其结点数C 任一结点无左孩子D 任一结点无右孩子6.一趟排序结束后不一定能够选出一个元素放在其最终位置上的是 ;A 堆排序B 冒泡排序C 快速排序D 希尔排序7.设某棵三叉树中有40个结点,则该三叉树的最小高度为 ;A 3B 4C 5D 68.顺序查找不论在顺序线性表中还是在链式线性表中的时间复杂度为 ;A OnB On2C On1/2D O1og2n9.二路归并排序的时间复杂度为 ;A OnB On2C Onlog2nD O1og2n10. 深度为k的完全二叉树中最少有个结点;A 2k-1-1B 2k-1C 2k-1+1D 2k-111.设指针变量front表示链式队列的队头指针,指针变量rear表示链式队列的队尾指针,指针变量s指向将要入队列的结点X,则入队列的操作序列为 ;A front->next=s;front=s;B s->next=rear;rear=s;C rear->next=s;rear=s;D s->next=front;front=s;12.设某无向图中有n个顶点e条边,则建立该图邻接表的时间复杂度为 ;A On+eB On2C OneD On313.设某哈夫曼树中有199个结点,则该哈夫曼树中有个叶子结点;A 99B 100C 101D 10214.设二叉排序树上有n个结点,则在二叉排序树上查找结点的平均时间复杂度为 ;A OnB On2C Onlog2nD O1og2n15.设用邻接矩阵A表示有向图G的存储结构,则有向图G中顶点i的入度为 ;A 第i行非0元素的个数之和B 第i列非0元素的个数之和C 第i行0元素的个数之和D 第i列0元素的个数之和二、判断题20分1.调用一次深度优先遍历可以访问到图中的所有顶点;。
二分法查找元素公式(二)

二分法查找元素公式(二)二分法查找元素公式1. 什么是二分法查找?二分法是一种基于比较的查找算法,也称为折半查找。
它是针对已排好序的数组进行查找的一种高效算法。
2. 二分法查找的原理二分法查找的原理是通过将要查找的范围分成两半,每次取中间位置的元素与目标值进行比较,根据比较的结果来确定下一次查找的范围,从而将查找范围逐渐缩小,直到找到目标值或者确定目标值不存在。
3. 二分法查找的公式二分法查找的公式如下:mid = (low + high) / 2其中,low表示当前查找范围的最小索引,high表示当前查找范围的最大索引,mid表示当前查找范围的中间索引。
4. 二分法查找的步骤二分法查找的步骤如下:•初始化low和high分别为数组的第一个索引和最后一个索引;•循环直到low大于high:–计算mid的值;–如果mid对应的元素等于目标值,则返回mid;–如果mid对应的元素小于目标值,则更新low为mid+1;–如果mid对应的元素大于目标值,则更新high为mid-1;•返回 -1,表示目标值不存在于数组中。
5. 举例说明假设有以下有序数组[1, 3, 5, 7, 9, 11, 13, 15, 17, 19],我们要查找数字9。
•初始时,low为0,high为9;•第一次循环,计算mid = (0 + 9) / 2 = 4,数组中索引为4的元素为9,找到目标值;•返回4。
通过二分法查找,我们可以快速定位到目标值9的位置。
6. 总结二分法查找是一种高效的查找算法,它的公式为mid = (low + high) / 2。
通过将查找范围逐渐缩小,可以快速找到目标值。
在处理大规模的有序数组查找时,二分法查找是一种常用的方法。
数据结构-第9章 查找

静态查找表 对查找表的查找仅是以查询为 目的,不改动查找表中的数据。 动态查找表 在查找的过程中同时插入不存 在的记录,或删除某个已存在的记录。
查找成功 查找表中存在满足查找条件的记 录。 查找不成功 查找表中不存在满足查找条件 的记录。
内查找 整个查找过程都在内存中进行。 外查找 在查找过程中需要访问外存。 平均查找长度ASL——查找方法时效的度量 为确定记录在查找表中的位置,需和给定值 进行比较的关键字个数的期望值。 n 查找成功时的ASL计算方法: ASL pici
3. 在二叉排序树上的操作
1)查找
[例] Key=28 f 24 12 T
45
53 28 90
Key=32 T 45 24 53 12 f 28 90 32
[算法描述]
2) 插入
[算法描述]
3) 生成
查找算法
返回
BiTree SearchBST(BiTree T,KeyType key){
//在根指针T所指二叉树中递归地查找某关键字等于 //key的数据元素,若查找成功,则返回指向该数据元 //素结点的指针,否则返回空指针
图9.1 用折半查找法查找12、50的过程 其中mid=(low+high)/2,当high<low时,表 示不存在这样的子表空间,查找失败。
成功! 位 置 1 2 3 4 5 6 7 8 9 10 11
值
6 12 15 18 22 25 28 35 45 58 60
low hign mid mid hign mid low mid (a) 用折半查找法查找12的过程
[性能分析] • 空间:一个辅助空间。 • 时间: 查找成功时的平均查找长度 设表中各记录查找概率相等 n ASLs(n)= PiCi =(1+2+ ... +n)/n =(n+1)/2 i 1 [算法特点] • 算法简单,对表结构无任何要求 • n很大时查找效率较低 • 改进措施:非等概率查找时,可将查找概率高 的记录尽量排在表后部。
计算机二级数据结构与算法题库

数据结构与算法一.算法1.算法的复杂度主要包括时间复杂度和空间复杂度,算法的时间复杂度与空间复杂度没有直接关系。
2.算法的时间复杂度是指执行算法所需要的计算工作量。
3.循环队列是队列的顺序存储结构4.循环队列中的元素个数随队头指针与队尾指针变化而动态变化。
5.线性表链式存储结构的存储空间可以是连续的,也可以是不连续的。
6.有且只有一个根结点的数据结构可能是线性结构,也可能是非线性结构。
7.在线性单链表中,可以从任何一个结点开始直接遍历到所有结点。
8.循环队列是队列的顺序存储结构。
9.在排序方法中,最坏情况下时间复杂度最小的是堆排序。
10.为了对有序进行对分查找,则要求有序表只能顺序存储。
11.带链的栈与队列是线性结构。
12.算法的时间复杂度的度量方法是,执行算法所需要的基本运算次数;时间复杂度与所运用的计算工具无关。
13.在最坏情况下,希尔排序的时间复杂度比直接排序的时间复杂度要小。
14.算法的空间复杂度的度量方法是,执行算法所需要的存储空间;与算法所处理的数据存储空间有关。
15.有的非线性结构也可以采用顺序存储结构。
16.算法的时间复杂度与算法所处理数据的存储结构有直接关系;算法的空间复杂度与算法所处理数据的存储结构有直接关系。
17.具有两个根结点的数据结构一定是非线性结构。
18.带链队列的存储空间可以不连续,但队头指针可以大于也可以小于队尾指针。
19.在链表中,如果有两个结点的同一指针域的值相等,泽该链表一定是非线性结构。
20.在带链栈中,队头指针和队尾指针都是在动态变化中;栈顶指针是在动态变化的,栈底指针是不变的。
21.链表结点中具有两个指针域的数据结构可以是线性结构的,也可以是非线性的。
22.程序可以作为算法的一种描述方法。
23.没有根结点或没有叶子结点的数据结构一定是非线性结构。
24.算法强调动态的执行过程,不同于静态的计算公式;算法必须能在有限个步骤之后终止;算法的优劣取决于算法复杂度,与程序的环境无关;算法设计必须考虑算法的复杂度。
vb程序设计书习题和参考答案

b = "cdef"
e = Right(a, 3)
f = Mid(b, 2, 3)
If e < f Then Print e + f Else Print f + e
End Sub
程序3.请写出单击窗体后,窗体上的显示结果。
Private Sub Form_Click()
Dim i As Integer, j As Integer
2.用Dim c(2 to 5) As Integer语句定义的数组占用个字节的内存空间。
A、4 B、8 C、6 D、10
3.以下是VB合法的数组元素。
A、x9 B、x[9] C、x(9) D、x{9}
4.设有数组声明语句:Dim a(2,3 to 4) As Integer
以上语句所定义的数组a为维数组,共有个元素,第一维下标从到,第二维下标从到。
6.窗体模块的文件扩展名是
A、.exe B、.bas C、.frx D、frm
7
A、FontName B、FontSize C、FontBold D、FontItalic
8.设置窗体的字号用
A、FontName B、FontSize C、FontBold D、FontItalic
2.编程,输入x值,按下式计算并输出y值。
3.计算下式的和,变量x与n的数值用输入对话框输入。
4.用近似公式求自然对数的底数e的值,直到前后两项之差小于10-4为止。
习题四
一、选择题
1.窗体通用部分的语句“Option Base1”,决定本窗体中数组下标界。
A、下界必须为1 B、缺省的下界为1 C、下界必须为0 D、缺省的下界为0
信息学奥林匹克试题(5)(参考答案)

2007年东阳市信息学奥赛预选赛试题(中学组PASCAL)★全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效★一、单项选择题(共20题,每题2分;共计40分)1.二进制数01100100转换成十六进制数是()。
A.32B.64C.128D.100E.2562.Internet给我们提供了资源共享、浏览、检索信息和远程登录等多种服务,下面几个选项中用于远程登录的是()。
A.WWW B.TCP/IP C.Telnet D.E-mail E.FTP3.在流程图的符号中,菱形框一般作为()。
A.起始框B.判断框C.输入输出框D.处理工作框E.结速框4.称一种语言为低级程序语言是由于它_____。
A.离机器特性近B.离自然语言近C.编程难度低D.通用性强5.在WWW页面访问时,浏览器通过网络与该IP地址处的WEB服务器的_____服务端口间建立一条TCP连接。
A.HTMLB.HTTPC.SMTPD.DNS6.当(A≥B)and(B≥C)的取值为真时,则表达式A<C的值是()。
A.真B.假C.1D.True E.不能确定7.在完全二叉树中,若一个结点是叶结点,则它没_____A.左子结点B.右子结点C.左子结点和右子结点D.左子结点、右子结点和兄弟结点8.一棵深度为K的完全二叉树(满二叉树)有()个结点。
A.2K-1B.2k-1C.2KD.2kE.2k+19.二分法查找_____存储结构。
A.只适合于顺序B.只适合于链式C.既适合于顺序也适合于链式D.既不适合于顺序也不适合于链式10.Internet上使用的两个最基本的协议是()A.TCP和IPB.TCP和SPXC.IP和SPXD.TCP和IPX11.冒泡法排序的算法如下:比较相邻的两个数据,若是逆序,交换两个数据的位置,否则比较下一对,直到将全部序列排好为止。
若用冒泡法将数据3,2,6,5按从小到大进行排列,则需要进行数据比较的次数是()。
A.4B.5C.6D.7E.812.网址中net表示()。
数据结构第九章--查找-习题及答案

第九章查找一、选择题1.若查找每个记录的概率均等,则在具有n个记录的连续顺序文件中采用顺序查找法查找一个记录,其平均查找长度ASL为( )。
A. (n-1)/2 B. n/2 C. (n+1)/2 D. n2. 下面关于二分查找的叙述正确的是 ( )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,则应作( ) 型调整以使其平衡。
18春北理工《数据结构与算法》在线作业

北理工《数据结构与算法》在线作业一、单选题:1.(单选题)设连通图G中的边集E={(a,b),(a,e),(a,c),(b,e),(e,d),(d,f),(f,c)},则从顶点a出发可以得到一种深度优先遍历的顶点序列为() (满分AabedfcBacfebdCaebdfcDaedfcb正确:C2.(单选题)栈的插入和删除操作在()进行。
(满分A栈顶B栈底C任意位置D指定位置正确:A3.(单选题)某二叉树的前序和后序序列正好相同,则该二叉树一定是()的二叉树。
(满分A空或只有一个结点B高度等于其结点数C任一结点无左孩子D任一结点无右孩子正确:A4.(单选题)下列排序算法中,其中()是稳定的。
(满分A堆排序,冒泡排序B快速排序,堆排序C直接选择排序,希尔排序D归并排序,冒泡排序正确:5.(单选题)对于经常要存取线性表任意指定位置元素的应用,线性表应采用()存储结构。
(满分 A顺序存储结构B链式存储结构C线性链表D栈正确:6.(单选题)快速排序属于那种排序类型()。
(满分:)A选择排序B插入排序C交换排序D基数排序正确:7.(单选题)线性链表是通过()方式表示元素之间的关系 (满分:)A后继元素地址B元素的存储顺序C左、右孩子地址D元素的相对存储位置正确:8.(单选题)关键路径是指AOE(ActivityOnEdge)网中()。
(满分:)A最长的回路B最短的回路C从源点到汇点(结束顶点)的最长路径D从源点到汇点(结束顶点)的最短路径正确:A2B3C4D5正确:10.(单选题)下列排序方法中效率最高的排序方法是()。
(满分:)A起泡排序B堆排序C快速排序D直接插入排序正确:11.(单选题)已知A=(a,b),B=(A,A),那么GetHead(GetHead(GetTail(B)))=()。
(满分:)A(a)BACaD(A)正确:12.(单选题)图的存储结构不包括() (满分:)A数组表示B邻接表C邻接多重表D孩子兄弟表示正确:13.(单选题)()是HASH查找的冲突处理方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
“二分法查找数据”教学案例一、教学设计[教学分析]:程序设计中经常需要进行数据的查找与存储,设计查找算法时,往往要考虑算法的实现是否方便、快捷,而引入数组的使用,及在数组中查找数据的基本方法,即顺序查找与二分法查找等。
本课是教科版《算法与程序设计》选修第三章《算法的实现》的第3节第2课时,主要要求学生在理解什么是数组,如何定义数组及给数组赋值,掌握在使用顺序法在数组中查找数据的基础上继续学习二分法查找,并比较两种基本方法查找数据的特点,由于本课是本章的学习难点,为了激发学生的学习兴趣,更好掌握二分法的算法思想,本人设计了一个“人与电脑竞猜商品价格PK”的游戏,通过该游戏让学生学习什么是二分法算法,并通过上机实现该游戏的程序,完成了本课的教学。
建议使用1课时。
[教学目标]:1. 知识目标:理解二分法查找算法思想,学会使用二分法查找解决问题。
2. 能力目标:通过学习二分法查找数据及应用,提高学生分析与解决问题的能力。
3. 情感态度与价值观:通过上机完成“人与电脑竞猜商品价格PK”等VB程序设计,让学生体验编程快乐、感受成功的喜悦。
[教学重难点]:重点:二分法的算法基本思想及相关的程序实现。
难点:如何使用二分法在数据组中查找数据,及解决一些实际的的问题(如使用二分法求数学方程的近似解等)。
[教学策略]:“任务驱动”教学法、讲授法、讨论法、游戏体验法、案例分析法等多种教学方法的有机结合,并整合多媒体网络教学手段、课程学习网站,组织学生自主探究学习、合作交流等完成本节课的教学。
[学情分析]:通过上一节课的学习,学生学会VB中数组的声明及与使用及顺序查找的算法思想,由于本校的学生全部来自于农村,以前从未接触程序设计,在上一节课的学习时,本人使用教材中的“英文字母的加密与解密”例子引导学生学习顺序查找算法,学习效果不甚理想,因此,本课的二分法查找的学习,本人决定不使用教材中的“英文字母的加密与解密”的例子,而采用自己设计的“人与电脑竞猜商品价格PK”的实例,让学生从玩到程序的实现及相关知识的梳理完成了本课的学习。
[教学流程](复习数组的声明及使用)(运行事先设计的“人与电脑竞猜商品价格PK”VB程序,是一个猜1至100元内的商品价格,程序分“人猜”与“电脑猜”两部分,总分100分,猜错1次扣10分,猜对时得分最高获胜。
)(同学们是如何猜价格,引入二分法查找的算法。
)(结合课本P55二分法的流程图,讲解二分法查找的算法)(剖析程序,剖析程序中“开始”、“大了”按钮等部分程序) (学生上机完成课堂任务)(学生课堂任务完成情况评价,及本课学习目标完成情况进行反思) (教学小结,知识点梳理,整理学习笔记等)(在数学中如何使用二分法求方程的近似解,试用VB 编程实现)(布置课外作业)二、教学过程实录复习旧知识(2分钟)师:同学们好,上节课我们学习了数组及顺序查找的算法,那么什么是数组呢?如果有一组元素包括大、小写字母及空格共 53 个,如何定义一个数组表示(数组名称为 zifu )?(课件展示问题,请两名学生回答)生1:数组(Array )是一组相同类型的变量集合,集合中的每个元素都是独立的变量,它们能够通过数组序号被引用。
生2:dim zifu(52) as string师:下面这段程序的执行结果是什么?(课件展示问题,请学生回答)Dim i As IntegerDim zifu(25) As StringFor i=0To 25zifu(i)=chr(65+i)Next i生3:分别将A~Z 赋值给zifu 数组的每个元素。
创设情境、引入新课:(10分钟)师:同学们掌握得不错,大家经常看到电视上一些商品猜价节目吧。
(学生争着回答:“购物街”、“幸运52”等),好今天我们设计一个类似的VB 程序,叫做“人与电脑竞猜商品价格PK ”。
(学生很想知道这个程序的游戏规则)教师活动:教师演示本程序,并说明游戏规则:这是一个猜1至100元内的商品价格,程序分“人猜”与“电脑猜”两部分,总分100分,猜错1次扣10分,猜对时得分最高者获胜,每次出现的商品价格都是随机的。
程序界面如图。
师:明白游戏规则后,大家想不想玩玩生:(异口同声)想!师生活动:教师请两名同学进行“人猜”部分的猜价,比较两名同学的成绩。
并让同学简单讨论为什么另外一名同学会获胜,如何让你猜你会怎么猜得分才会高呢?(学生议论纷纷,讨论如何才能得高分,为下面问题的提出做铺设。
)师:好,我们先静静,大家思考一下,如何用最笨的方法来猜商品价格,那将怎样猜?生:从1一直猜到100师:好,这种猜价的方法也就是我们上节课学到的(故意停顿,学生争着回答:顺序查找)师:非常好,大家都知道这种方法很笨,但最简单保证能猜得到。
(引导学生意识到顺序查找算法的特点)师:刚才我在听大家交流讨论,如何猜价才能获得高分,哪位同学来说说你会怎么猜才能获得高分?(请同学回答,学生争着举手回答)生4:从10开始猜,每次增加10,直到电脑出现“大了”,再往前猜。
师:这有点类似于顺序查找,这种方法是最好吗?生:不是!生5:我从1到100元的中间值50元开始猜,如果大了,我就猜1到50元的中间值25,同理,利用这种折半的方法进行猜价格。
(这个答案就是本课要讲的二分法查找算法)师:大家说这种方法好吗?(多数的同学认为这种方法不错)师:说这种方法好,我们可要拿出证据,现在我们做一个活动。
师生互动活动:请3名同学进行猜价,把同学猜到的价格再分别让电脑猜,进行人机PK,看谁获胜。
(学生的兴趣被推到高潮)人机PK的结果:分别猜到的商品价格是98元、52元、55元,3名同学的得分分别是:40、40、30,电脑的得分分别是:60、40、40,结果是机胜2平1。
师:看到这个结果,大家知道电脑是2胜1平,那么电脑是怎样猜的呢?(学生很想知道)师:其实电脑使用的方法正是前面那位同学所说的方法,即折半查找法也叫二分法查找,根据刚才我们所完成的活动,大家一起说说二分法查找的算法思想。
(学生讨论)新课的学习:(8分钟)师:下面我们翻开课本P52,一起学习二分法查找的算法流程。
(前面的引入及相关游戏活动虽然所花时间较多,10分钟左右,但学生已经通过活动基本理解什么二分法查找算法,教师再结合课本P55的二分法查找流程进行讲解,便显得游刃有余,学生很容易接受。
)师:理解二分法查找算法的思想后,大家思考一下,二分法查找对查找的数据有何要求?生:数据应该是有序的。
师:这一点非常重要,它决定我们在查找数据时是否能使用二分法查找。
师:通过对二分法算法的学习,大家想知道这个游戏程序是怎样使用二分法来实现其算法呢?然后通过学习,自己上机编程实现?学生:想师:好,下面我们剖析该程序“电脑猜”部分的“开始”、“大了”按钮的程序代码。
师生共同剖析程序:“通用”部分声明:Dim P1%, P2%, M%, score1% ’声明价格的下限P1、上限P2、电脑猜价M及得分score1。
“开始”按钮的程序剖析:Private Sub Cmdok_Click()If Cmdok.Caption = "开始" Then ’如果Cmdok按钮的Caption为“开始”score1 = 100 ’得分最高分为100分Cmdok.Caption = "正确" ’让Cmdok按钮的Caption为“正确”P1 = 1: P2 = 100 ’一开始价格的下限为1,上限为100M = (P1 + P2) / 2 ’电脑猜价为下限与上限中间值。
Label1.Caption = M ’在label1显示电脑的猜价。
ElseLabel1.Caption = "我猜对了!我的得分是:" & score1 ’在label1显示电脑猜对了及得分。
Cmdok.Caption = "开始" ’让Cmdok按钮的Caption为“开始”以便下次再猜。
End IfEnd Sub“大了”按钮的程序剖析:Private Sub cmdbigger_Click()P2 = M – 1 ’价格上限为上次的猜价-1If P1 > P2 Then ’如果价格下限大于上限Label1.Caption = "猜不到商品的价格!" ’label1显示猜不到商品的价格Cmdok.Caption = "开始" ’让Cmdok按钮的Caption为“开始”以便重新再猜。
Elsescore1 = score1 – 10 ’得分扣10分M = (P1 + P2) / 2 ’电脑重新猜价,价格同样为下限与上限的中间值。
Label1.Caption = M ’在label1显示电脑的猜价End IfEnd Sub师:通过程序的剖析,同学理解“电脑猜价”的程序含义,下面大家有没有信心通过自己的学习,完成“小了”按钮的程序代码?并最终完成该程序,体验自己制作的程序呢?生:有,我们想做。
师:下面我们来完成今天的课堂任务。
课堂任务:(15分钟)1、在课程学习网站上,下载并运行“人与电脑竞猜商品价格PK”程序,理解其代码的含义,试写出其“小了”按钮的程序代码。
(在学生操作过程中,教师对基础较差的学生进行个别辅导,及时发现与解决学生上机过程存在的问题,并鼓励基础好的学生参与帮助辅导,促进学生之间互助与关爱,争取所有的同学都完成任务。
)2、思考应用二分法查找有什么优点和缺点?顺序查找有哪些优点和缺点?(学生讨论)(二分法:优点是减少了查找的次数,提高了查找效率。
缺点是必须是在有序数组中才能使用。
顺序查找:优点是算法简单,对数组的结构无任何要求。
缺点是查找效率低,当数组的元素个数较多时不宜采用该方法查找。
)学习评价:(3分钟)1、对自己完成的作品进行评价及他人互评与分享。
2、教师随机让个别学生演示其作品,师生共同进行简单点评。
3、检查本节课学习目标的掌握情况,通过本课的学习你是否能理解什么是二分法查找,及如何使用二分法查找算法解决一些实际的问题。
课堂小结(学习笔记)(2分钟)教师与学生共同归纳本课学习内容及知识梳理,并整理相关学习笔记。
二分法查找1、什么是二分法P552、二分法查找的基本算法思想P553、顺序查找与二分法查找的特点:(1)二分法:优点是减少了查找的次数,提高了查找效率。
缺点是必须是在有序数组中才能使用。
(2)顺序查找:优点是算法简单,对数组的结构无任何要求。
缺点是查找效率低,当数组的元素个数较多时不宜采用该方法查找。
教学延伸:(4分钟)师:学以致用,本课我们学习二分法算法及二分法在“人与电脑竞猜商品价格PK”游戏程序的实现,并较好完成相应课堂任务。