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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 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”游戏程序的实现,并较好完成相应课堂任务。