9.二分法查找数据

9.二分法查找数据
9.二分法查找数据

“二分法查找数据”教学案例

一、教学设计

[教学分析]:

程序设计中经常需要进行数据的查找与存储,设计查找算法时,往往要考虑算法的实现是否方便、快捷,而引入数组的使用,及在数组中查找数据的基本方法,即顺序查找与二分法查找等。

本课是教科版《算法与程序设计》选修第三章《算法的实现》的第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 Integer

Dim zifu(25) As String

For i=0To 25

zifu(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,上限为100

M = (P1 + P2) / 2 ’电脑猜价为下限与上限中间值。

Label1.Caption = M ’在label1显示电脑的猜价。

Else

Label1.Caption = "我猜对了!我的得分是:" & score1 ’在label1显示电脑猜对

了及得分。

Cmdok.Caption = "开始" ’让Cmdok按钮的Caption为“开始”以便下次再猜。

End If

End Sub

“大了”按钮的程序剖析:

Private Sub cmdbigger_Click()

P2 = M – 1 ’价格上限为上次的猜价-1

If P1 > P2 Then ’如果价格下限大于上限

Label1.Caption = "猜不到商品的价格!" ’label1显示猜不到商品的价格

Cmdok.Caption = "开始" ’让Cmdok按钮的Caption为“开始”以便重新再猜。

Else

score1 = score1 – 10 ’得分扣10分

M = (P1 + P2) / 2 ’电脑重新猜价,价格同样为下限与上限的中间值。

Label1.Caption = M ’在label1显示电脑的猜价End If

End Sub

师:通过程序的剖析,同学理解“电脑猜价”的程序含义,下面大家有没有信心通过自己的学习,完成“小了”按钮的程序代码?并最终完成该程序,体验自己制作的程序呢?

生:有,我们想做。

师:下面我们来完成今天的课堂任务。

课堂任务:(15分钟)

1、在课程学习网站上,下载并运行“人与电脑竞猜商品价格PK”程序,理解其代码的含义,试写出其“小了”按钮的程序代码。

(在学生操作过程中,教师对基础较差的学生进行个别辅导,及时发现与解决学生上机过程存在的问题,并鼓励基础好的学生参与帮助辅导,促进学生之间互助与关爱,争取所有的同学都完成任务。)

2、思考应用二分法查找有什么优点和缺点?顺序查找有哪些优点和缺点?(学生讨论)

(二分法:优点是减少了查找的次数,提高了查找效率。缺点是必须是在有序数组中才能使用。顺序查找:优点是算法简单,对数组的结构无任何要求。缺点是查找效率低,当数组的元素个数较多时不宜采用该方法查找。)

学习评价:(3分钟)

1、对自己完成的作品进行评价及他人互评与分享。

2、教师随机让个别学生演示其作品,师生共同进行简单点评。

3、检查本节课学习目标的掌握情况,通过本课的学习你是否能理解什么是二分法查找,及如何使用二分法查找算法解决一些实际的问题。

课堂小结(学习笔记)(2分钟)

教师与学生共同归纳本课学习内容及知识梳理,并整理相关学习笔记。

二分法查找

1、什么是二分法P55

2、二分法查找的基本算法思想P55

3、顺序查找与二分法查找的特点:

(1)二分法:优点是减少了查找的次数,提高了查找效率。缺点是必须是在有序数组中才能使用。

(2)顺序查找:优点是算法简单,对数组的结构无任何要求。缺点是查找效率低,当数组的元素个数较多时不宜采用该方法查找。

教学延伸:(4分钟)

师:学以致用,本课我们学习二分法算法及二分法在“人与电脑竞猜商品价格PK”游戏程序的实现,并较好完成相应课堂任务。但是二分法作为一种重要的算法,它有广泛的应用,我们如何利用二分法来解决实际的问题呢?如数学中,可用二分法查找算法求方程的近似解。

举例:利用二分法求函数y=lnx+2x-6在区间(2,3)内零点的近似值(精确度0.1)。

附代码及运行结果:

'求函数y=lnx+2x-6在区间(2,3)内零点的近似值(精确度0.1)

Private Sub command1_Click()

Dim p1, p2, x, y As Single

p1 = 2: p2 = 3 ’p1,p2为区间的上界及下界。

Do While p2 - p1 > 0.1 ’精确度为0.1。

x = (p2 + p1) / 2 ’x从p1,p2取中值。

y = Log(x) + 2 * x - 6

If y > 0 Then

p2 = x - 0.01 ’y>0时表示x落在左半部

Else 调整上界p2 否则落在右半部,调整下界p1。通过不断重复缩p1 = x + 0.01 小p1,p2的区间,直到p2-p1<0.1的精确度,这时的(p1,p2)End If 为所求的近似解的区间。

Loop

Label1.Caption = "方程的近似解为区间:" & vbCrLf & "[" & p1 & "," & p2 & "]的任一值"

End Sub

课外作业:(1分钟)

1、复习本课的内容。

2、上网查找并学习二分法查找相关VB知识。(课外教学延伸)

3、尝试使用二分法算法求其它数学方程的近似值(如y=3x-7x-8等方程),思考生活学习中还有哪些问题可使用二分法算法解决,试着编程实现。

三、教学反思:

本课在教学中并没有什么新的创意,但教学过程中能紧扣课标,从学生的认识特点和实际能力出发,考虑本校学生全部是农村学生,以前从未接触程序,对编程有较大恐惧,如何消除这种心理,让他们树立信心。因此本课教学时没有采用教材提供的“英文字母的加密与

解密”例子,而用教师自己设计的例子——“人与电脑竞猜商品价格PK”,让学生在游戏活动中,自然从上节课的顺序查找的引导到二分法查找的算法学习。这样引入自然、流畅,既复习上节课的知识,更让学生在从顺序查找引导到二分法查找算法的学习时,已经基本了解到两种基本查找算法的特点,并通过相关游戏活动中建构学习,自己归纳二分法查找算法的思想并加以理解。整节课通过“人与电脑竞猜商品价格PK”例子,以“观察——玩——分析——做——评价——总结”为主线展开教学的。通过教学实践证明,本课受到了学生的欢迎,很好地完成相应教学目标。

本节课的教学中本人感到比较成功的地方有:

1、“玩”是孩子的天性,本课让学生深深地感受到“在学中玩,在玩中学”的快乐课堂气氛。

2、以学生为本,紧扣课标,教材处理恰当,通过游戏激发学习兴趣,不仅让学生玩,更让他们通过分析算法及编程实现程序,感受比玩更快乐的成功喜悦。

3、课堂任务设计合理,通过让学生完成“小了”按钮的程序代码,进行半成品加工,能从学生的实际出发,既让学生能够体验编程的乐趣,学习相应二分法算法的程序实现,又减轻操作难度,尽量使每个同学都能完成任务。

4、学科的渗透与整合:信息技术新课程强调全面提高学生的信息素养,信息技术素养的一个重要方面也就是很好的利用信息技术,强调学以致用,对中学生来说,特别是如何将信息技术与其它学科学习整合。因此,本课教学延伸方面,很好利用二分法算法求数学方程近似解的例子进行知识拓展,并延伸到解决其它问题。

5、整合课程学习网站,学生通过学案进行自主探究学习。

实施新课程的教学时,本人教学时不仅有教学设计,更为学生精心准备了学案,每个学案都有具体的学习步骤、任务作业、学习评价及知识点小结(即,本人要求学生要做的学习笔记)等,并传到自己设计与制作课程学习网站。有效地引导学生进行自主学习。另外,学习笔记能够让学生养成良好学习行为,有效解决学后忘记的问题,既能让学生按照课标要求提高相应技术素养又有利于参加有关考试(如会考)。

教学感悟:

玩游戏并不一定是坏事,要让学生玩,更要引导学生从玩中去学习。其实,比尔·盖茨,小时候就非常喜欢玩电脑游戏而爱上电脑编程,最终成为世界著名的软件天才,为整个世界的软件业做出杰出的贡献。因此,我们应该如何从玩游戏中的去思考、发现、学习及解决相应的问题。学以致用,不断通过自己编程解决相应问题,如本课教学延伸中利用二分法求方程近似解等。勤于思考,勇于探索,就像“游戏过关一样”不断地克服困难,这样你就不断的提高,有朝一日也许你也能开发出程序让别人使用,成为真正的软件工程师。

不足之处:

1、本课是本章的一个学习难点,为了让学生更好理解与掌握相应的学习内容,讲解时花了较多的时间,留给学生交流的时间较少,对学生作品的评价也很简陋。

2、同样因为时间紧张,课堂中很难针对利用二分法算法求方程的解及解决其它问题进行深入的拓展。

数据结构第7章-答案

一、单选题 C01、在一个图中,所有顶点的度数之和等于图的边数的倍。 A)1/2 B)1 C)2 D)4 B02、在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的倍。 A)1/2 B)1 C)2 D)4 B03、有8个结点的无向图最多有条边。 A)14 B)28 C)56 D)112 C04、有8个结点的无向连通图最少有条边。 A)5 B)6 C)7 D)8 C05、有8个结点的有向完全图有条边。 A)14 B)28 C)56 D)112 B06、用邻接表表示图进行广度优先遍历时,通常是采用来实现算法的。 A)栈 B)队列 C)树 D)图 A07、用邻接表表示图进行深度优先遍历时,通常是采用来实现算法的。 A)栈 B)队列 C)树 D)图 A08、一个含n个顶点和e条弧的有向图以邻接矩阵表示法为存储结构,则计算该有向图中某个顶点出度的时间复杂度为。 A)O(n) B)O(e) C)O(n+e) D)O(n2) C09、已知图的邻接矩阵,根据算法思想,则从顶点0出发按深度优先遍历的结点序列是。 A)0 2 4 3 1 5 6 B)0 1 3 6 5 4 2 C)0 1 3 4 2 5 6 D)0 3 6 1 5 4 2 B10、已知图的邻接矩阵同上题,根据算法,则从顶点0出发,按广度优先遍历的结点序列是。 A)0 2 4 3 6 5 1 B)0 1 2 3 4 6 5 C)0 4 2 3 1 5 6 D)0 1 3 4 2 5 6 D11、已知图的邻接表如下所示,根据算法,则从顶点0出发按深度优先遍历的结点序列是。 A)0 1 3 2 B)0 2 3 1 C)0 3 2 1 D)0 1 2 3 A12、已知图的邻接表如下所示,根据算法,则从顶点0出发按广度优先遍历的结点序列是。 A)0 3 2 1 B)0 1 2 3 C)0 1 3 2 D)0 3 1 2 A13、图的深度优先遍历类似于二叉树的。 A)先序遍历 B)中序遍历 C)后序遍历 D)层次遍历 D14、图的广度优先遍历类似于二叉树的。 A)先序遍历 B)中序遍历 C)后序遍历 D)层次遍历 B15、任何一个无向连通图的最小生成树。 A)只有一棵 B)一棵或多棵 C)一定有多棵 D)可能不存在 A16、对于一个具有n个结点和e条边的无向图,若采用邻接表表示,则顶点表的大小为,所有边链表中边结点的总数为。 A)n、2e B)n、e C)n、n+e D)2n、2e C17、判断有向图是否存在回路,可以利用___算法。 A)关键路径 B)最短路径的Dijkstra C)拓扑排序 D)广度优先遍历 A18、若用邻接矩阵表示一个有向图,则其中每一列包含的“1”的个数为。 A)图中每个顶点的入度 B)图中每个顶点的出度 C)图中弧的条数 D)图中连通分量的数目

数据结构 第九章 查找 作业及答案

第九章查找 一、填空题 1. 在数据的存放无规律而言的线性表中进行检索的最佳方法是。 2. 线性有序表(a 1,a 2 ,a 3 ,…,a 256 )是从小到大排列的,对一个给定的值k,用二分法检索 表中与k相等的元素,在查找不成功的情况下,最多需要检索次。设有100个结点,用二分法查找时,最大比较次数是。 3. 假设在有序线性表a[1..20]上进行折半查找,则比较一次查找成功的结点数为1;比较两 次查找成功的结点数为 2 ;比较四次查找成功的结点数为 ,其下标从小到大依次是 ____,平均查找长度为。 4.折半查找有序表(4,6,12,20,28,38,50,70,88,100),若查找表中元素20,它将依次与表中元素比较大小。 5. 在各种查找方法中,平均查找长度与结点个数n无关的查找方法是。 6. 散列法存储的基本思想是由决定数据的存储地址。 7. 有一个表长为m的散列表,初始状态为空,现将n(n

数据结构作业系统第七章答案

7.22③试基于图的深度优先搜索策略写一算法,判别以邻接表方式存储的有向图中是否存在由顶点vi到顶点vj的路径(i≠j)。注意:算法中涉及的图的基本操作必须在此存储结构上实现。 实现下列函数: Status DfsReachable(ALGraph g, int i, int j); /* Judge if it exists a path from vertex 'i' to */ /* vertex 'j' in digraph 'g'. */ /* Array 'visited[]' has been initialed to 'false'.*/ 图的邻接表以及相关类型和辅助变量定义如下:Status visited[MAX_VERTEX_NUM]; typedef char VertexType; typedef struct ArcNode { int adjvex; struct ArcNode *nextarc; } ArcNode; typedef struct VNode { V ertexType data; ArcNode *firstarc; } VNode, AdjList[MAX_VERTEX_NUM]; typedef struct { AdjList vertices; int vexnum, arcnum; } ALGraph; Status DfsReachable(ALGraph g, int i, int j) /* Judge if it exists a path from vertex 'i' to */ /* vertex 'j' in digraph 'g'. */ /* Array 'visited[]' has been initialed to 'false'.*/ { int k; ArcNode *p; visited[i]=1; for(p=g.vertices[i].firstarc;p;p=p->nextarc) { if(p) { k=p->adjvex; if(k==j)return 1; if(visited[k]!=1)

excel模糊查找二分法详细解析(版权寥若_晨星2013)

二分法的概念 数学方面牛顿二分法 一般地,对于函数f(x),如果存在实数c,当x=c时,若f(c)=0,那么把x=c叫做函数f(x)的零点。 解方程即要求f(x)的所有零点。 假定f(x)在区间(x,y)上连续 先找到a、b属于区间(x,y),使f(a),f(b)异号,说明在区间(a,b)内一定有零点,然后求f[(a+b)/2], 现在假设f(a)<0,f(b)>0,a0,则在区间(a,(a+b)/2)内有零点,(a+b)/2赋给b,从①开始继续使用中点函数值判断。 这样就可以不断接近零点。当区间小于一定值时,结束迭代过程。 通过每次把f(x)的零点所在小区间收缩一半的方法,使区间的两个端点逐步迫近函数的零点,以求得零点的近似值,这种方法叫做二分法。 从以上可以看出,每次运算后,区间长度减少一半,是线性收敛。另外,二分法不能计算复根和重根。 Excel中二分法的应用 明白了上面二分法的意思,那运用在excel中match、lookup……等的模糊查找就好理解了。但在excel中的应用又和数学方面有些不同。 一、EXCEL和数学方面二分法的不同 1、这第一点的不同是在excel中所有能模糊查找的函数的第二个参数找不到零点,所以用中间值代替。 中间值等于数组最中间那个值。 偶数数组的中间值=数据个数/2 的值=counta(数组)/2的值。 奇数数组的中间值=(数据个数+1)/2的值= counta(数组)/2+1/2的值。 2、这第二点的不同是excel中数组中包含文本值、逻辑值、错误值。这些在模糊查找时会被忽略。 3、如果不规定取数精度的话,数学方面的二分法是永远查找不到值的,只能无限循环下去,有些专家就在说二分法是错误的(这里就不做讨论),在excel里面就没有这方面的考虑。 二、Excel中二分法的具体算法 (这里就不做流程图了) Exce中的二分法也和数学牛顿二分法的查找方式一样(线性迭代),用excel的查找值(函数第一个参数)与目标值(中间值)进行比较,这里就涉及到4种情况。

9.二分法查找数据

“二分法查找数据”教学案例 一、教学设计 [教学分析]: 程序设计中经常需要进行数据的查找与存储,设计查找算法时,往往要考虑算法的实现是否方便、快捷,而引入数组的使用,及在数组中查找数据的基本方法,即顺序查找与二分法查找等。 本课是教科版《算法与程序设计》选修第三章《算法的实现》的第3节第2课时,主要要求学生在理解什么是数组,如何定义数组及给数组赋值,掌握在使用顺序法在数组中查找数据的基础上继续学习二分法查找,并比较两种基本方法查找数据的特点,由于本课是本章的学习难点,为了激发学生的学习兴趣,更好掌握二分法的算法思想,本人设计了一个“人与电脑竞猜商品价格PK”的游戏,通过该游戏让学生学习什么是二分法算法,并通过上机实现该游戏的程序,完成了本课的教学。建议使用1课时。 [教学目标]: 1. 知识目标:理解二分法查找算法思想,学会使用二分法查找解决问题。 2. 能力目标:通过学习二分法查找数据及应用,提高学生分析与解决问题的能力。 3. 情感态度与价值观:通过上机完成“人与电脑竞猜商品价格PK”等VB程序设计,让学生体验编程快乐、感受成功的喜悦。 [教学重难点]: 重点:二分法的算法基本思想及相关的程序实现。 难点:如何使用二分法在数据组中查找数据,及解决一些实际的的问题(如使用二分法求数学方程的近似解等)。 [教学策略]: “任务驱动”教学法、讲授法、讨论法、游戏体验法、案例分析法等多种教学方法的有机结合,并整合多媒体网络教学手段、课程学习网站,组织学生自主探究学习、合作交流等完成本节课的教学。 [学情分析]: 通过上一节课的学习,学生学会VB中数组的声明及与使用及顺序查找的算法思想,由于本校的学生全部来自于农村,以前从未接触程序设计,在上一节课的学习时,本人使用教材中的“英文字母的加密与解密”例子引导学生学习顺序查找算法,学习效果不甚理想,因此,本课的二分法查找的学习,本人决定不使用教材中的“英文字母的加密与解密”的例子,而采用自己设计的“人与电脑竞猜商品价格PK”的实例,让学生从玩到程序的实现及相关知识的梳理完成了本课的学习。 [教学流程] (复习数组的声明及使用) (运行事先设计的“人与电脑竞猜商品价格PK”VB程序,是一个猜1至100元内的商品价格,程序分“人猜”与“电脑猜”两部分,总分100分,猜错1次扣10分,猜对时得分最高获胜。)(同学们是如何猜价格,引入二分法查找的算法。)

数据结构习题汇编07第七章图试题

第七章图试题 一、单项选择题 1.在无向图中定义顶点的度为与它相关联的()的数目。 A. 顶点 B. 边 C. 权 D. 权值 2.在无向图中定义顶点 v i与v j之间的路径为从v i到达v j的一个()。 A. 顶点序列 B. 边序列 C. 权值总和 D. 边的条数 3.图的简单路径是指()不重复的路径。 A. 权值 B. 顶点 C. 边 D. 边与顶点均 4.设无向图的顶点个数为n,则该图最多有()条边。 A. n-1 B. n(n-1)/2 C. n(n+1)/2 D. n(n-1) 5.n个顶点的连通图至少有()条边。 A. n-1 B. n C. n+1 D. 0 6.在一个无向图中,所有顶点的度数之和等于所有边数的 ( ) 倍。 A. 3 B. 2 C. 1 D. 1/2 7.若采用邻接矩阵法存储一个n个顶点的无向图,则该邻接矩阵是一个 ( )。 A. 上三角矩阵 B. 稀疏矩阵 C. 对角矩阵 D. 对称矩阵 8.图的深度优先搜索类似于树的()次序遍历。 A. 先根 B. 中根 C. 后根 D. 层次 9.图的广度优先搜索类似于树的()次序遍历。 A. 先根 B. 中根 C. 后根 D. 层次 10.在用Kruskal算法求解带权连通图的最小(代价)生成树时,通常采用一个()辅助结构, 判断一条边的两个端点是否在同一个连通分量上。 A. 位向量 B. 堆 C. 并查集 D. 生成树顶点集合 11.在用Kruskal算法求解带权连通图的最小(代价)生成树时,选择权值最小的边的原则是该边不能 在图中构成()。 A. 重边 B. 有向环 C. 回路 D. 权值重复的边 12.在用Dijkstra算法求解带权有向图的最短路径问题时,要求图中每条边所带的权值必须是 ()。 A. 非零 B. 非整 C. 非负 D. 非正 13.在一个连通图中进行深度优先搜索得到一棵深度优先生成树,树根结点是关节点的充要条件是它至少 有()子女。

c语言二分法查找法的图形演示程序

电子实习报告 这次电子实习的目的是为了提高我们的编程能力,与上次的电工实习一样重要,要成为一名合格的大学本科毕业生,这是一个不可或缺的环节,所以我们要把握好这次机会,全力以赴,做到更好。 (一)需求分析 这次实习,每个同学的题目都不一样,这才能考验学生的水平嘛,我的题目是:编写二分法查找法的图形演示程序,用箭头跟踪指示出二分查找过程中的查找位置。当我刚拿到题目的时候,顿时吃了一惊,这也太难了,让我用二分法查找一个数还说的过去,那个我们学过,可是要用箭头跟踪指示出来可就让我大伤脑筋,用C语言绘图我们压根就没学过,我还想跟指导老师好好商量商量,让她多给点提示,可是仔细一想,要是我学过,这两个星期都花上面都不合算,这也就是实习的目的所在啊,就的现学现用,顺便培养一下我们的自学能力,真是一箭双雕啊。 接着,还是在指导老师的指点下,我先去图书馆找找相关的资料,用是碰钉子了, C语言这方面的书是少之又少,而且也是盲目的在那翻阅,见与绘图有关的书都翻翻,还是没有头绪,最后借了本C语言精彩编程。接着我又借了一本C图象处理编程,只有这两本书的紧密结合才能编出我那程序。 首先我的想法是只在Borland C++这个环境下完成,先把头绪给理清一遍,从我这题目中可以看到,要编出来主要有两大步:二分法和跟踪箭头。这二分法查找要求被查找的数据是按照某种顺序排列的有序序列,因此应该先将数据排序,再用二分法查找要查找的数据。二分法查找又称折半查找,是一种效率高的有序顺序表上的查找方法,下面讨论一下二分查找的实现方法:设顺序表存储在一维数组S中,设置三个变量low,high和mid,它们分别指向当前查找范围的下界,上界和中间位置。初始化时,令low=0,high=n-1,设置待查找数据元素的关键字为key. (1)mid=[low+high/2]. (2)比较Key与s[mid].key值的大小,若s[mid].key= Key,则查找成功, 结束查找,若s[mid].key〈Key,表明关键字为Key的记录可能在于 记录s[mid]的后半部分,修改查找范围,令下界指示变量low= mid+1, 上界指示变量high的值保持不变。若s[mid].key〉Key,表明关键字 为Key的记录只可能存在于s[mid]的前半部,修改查找范围,令high = mid-1,变量low保持不变。 (3)当前变量low与high的值,若low 〈=high,重复执行第(1)步和 第(2)步,若low 〉high,表明整个表已经查找完毕,表中不村在 关键字为的Key记录。 当然这里边也用到了冒泡排序法,所谓的冒泡排序就是指按增加或减少的顺序对一组类似的信息重新进行安排的过程。一般来说,当对信息进行排序时,只有信息中的某一小部分被用作排序的关键字,根据关键字对各元素进行比较。当必须要进行比较时,彼此交换的则是整个元素。 以上是对数据的查找方法的分析,下面就具体说说跟踪箭头的问题:

数据结构第7章习题答案

第7章 《图》习题参考答案 一、单选题(每题1分,共16分) ( C )1. 在一个图中,所有顶点的度数之和等于图的边数的 倍。 A .1/2 B. 1 C. 2 D. 4 ( B )2. 在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的 倍。 A .1/2 B. 1 C. 2 D. 4 ( B )3. 有8个结点的无向图最多有 条边。 A .14 B. 28 C. 56 D. 112 ( C )4. 有8个结点的无向连通图最少有 条边。 A .5 B. 6 C. 7 D. 8 ( C )5. 有8个结点的有向完全图有 条边。 A .14 B. 28 C. 56 D. 112 ( B )6. 用邻接表表示图进行广度优先遍历时,通常是采用 来实现算法的。 A .栈 B. 队列 C. 树 D. 图 ( A )7. 用邻接表表示图进行深度优先遍历时,通常是采用 来实现算法的。 A .栈 B. 队列 C. 树 D. 图 ( C )8. 已知图的邻接矩阵,根据算法思想,则从顶点0出发按深度优先遍历的结点序列是 ( D )9. 已知图的邻接矩阵同上题8,根据算法,则从顶点0出发,按深度优先遍历的结点序列是 A . 0 2 4 3 1 5 6 B. 0 1 3 5 6 4 2 C. 0 4 2 3 1 6 5 D. 0 1 2 34 6 5 ( D )10. 已知图的邻接表如下所示,根据算法,则从顶点0出发按深度优先遍历的结点序列是 ( A )11. 已知图的邻接表如下所示,根据算法,则从顶点0出发按广度优先遍历的结点序列是 A .0 2 4 3 1 5 6 B. 0 1 3 6 5 4 2 C. 0 1 3 4 2 5 6 D. 0 3 6 1 5 4 2 ??? ? ?? ? ? ? ? ? ???????????0100011101100001011010110011001000110010011011110A .0 1 3 2 B. 0 2 3 1 C. 0 3 2 1 D. 0 1 2 3

图解数据结构4-二分法查找法

六、二分法查找(Binary Search) 如何从数组里找一个元素的位置?如果排列是无序的,我们只能从头到尾找,但如果排列是有序的,我们则可以用别的更好的方法,二分查找法就类似我们在英汉词典里找一个单词的方法。如下图所示(假如我们要查找的数字是“88”): 下面我给出了一段demo代码,来演示二分查找法比顺序查找快多少,代码为了方便起见,初始化有序表的时候填入的数字都是均匀的,而事实上数字可以不均匀。你可以调整一下代码中TABLE_SIZE的值,从500,调到5000,再调到10000,再调到30000……你会发觉两者差距越来越明显。我在第一篇的地方提到二分查找法的复杂度为Ο(logn),而顺序查找的复杂度

为Ο(n),当n越来越大时候,Ο(logn)的优势也就越来越明显,当然了,前提是“有序”,才可用二分查找法。 #include "stdio.h" #include "time.h" #define TABLE_SIZE 50000 //returns the position, -1 means failed. int SequenceSearch(int *pArray, int iArraySize, int iVal) { int i; for(i=0; i pArray[iMiddle])

数据结构-第7章习题答案教学提纲

数据结构-第7章习 题答案

第7章《图》习题参考答案 一、单选题(每题1分,共16分) (C)1. 在一个图中,所有顶点的度数之和等于图的边数的倍。 A.1/2 B. 1 C. 2 D. 4 (B)2. 在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的倍。 A.1/2 B. 1 C. 2 D. 4 (B)3. 有8个结点的无向图最多有条边。 A.14 B. 28 C. 56 D. 112 (C)4. 有8个结点的无向连通图最少有条边。 A.5 B. 6 C. 7 D. 8 (C)5. 有8个结点的有向完全图有条边。 A.14 B. 28 C. 56 D. 112 (B)6. 用邻接表表示图进行广度优先遍历时,通常是采用来实现算法的。 A.栈 B. 队列 C. 树 D. 图 (A)7. 用邻接表表示图进行深度优先遍历时,通常是采用来实现算法的。 A.栈 B. 队列 C. 树 D. 图

( C )8. 已知图的邻接矩阵,根据算法思想,则从顶点0出发按深度优先遍历的结点序列是 ( D )9. 已知图的邻接矩阵同上题8,根据算法,则从顶点0出发,按深度优先遍历的结点序列是 A . 0 2 4 3 1 5 6 B. 0 1 3 5 6 4 2 C. 0 4 2 3 1 6 5 D. 0 1 2 34 6 5 ( D )10. 已知图的邻接表如下所示,根据算法,则从顶点0出发按深度优先遍历的结点序列是 ( A )11. 已知图的邻接表如下所示,根据算法,则从顶点0出发按广度优先遍历的结点序列是 ( A )12. 深度优先遍历类似于二叉树的 A .先序遍历 B. 中序遍历 C. 后序遍历 D. 层次遍历 A .0 2 4 3 1 5 6 B. 0 1 3 6 5 4 2 C. 0 1 3 4 2 5 6 D. 0 3 6 1 5 4 2 ??? ? ?? ? ? ? ? ? ???????????0100011101100001011010110011001000110010011011110A .0 1 3 2 B. 0 2 3 1 C. 0 3 2 1 D. 0 1 2 3 A .0 3 2 1 B. 0 1 2 3 C. 0 1 3 2 D. 0 3 1 2

大数据结构实验 二分查找

课程题目: 数据结构实验 学院: 班级: 姓名: 学号:

●实验题目:查找的应用 ●实验内容:二分查找 ●实验目的:掌握查找法的工作原理及应用过程,利用其工作原理完成上述实验题目中的内容。 ●实验要求:为了使学生更好的掌握与理解课堂上老师所讲的概念与原理,实验前每个学生要认真预习所做的实验内容及编写源程序伪码(写在纸上及盘中均可) 以便在实验课中完成老师所布置的实验内容。 ●实验学时:4学时 ●设计原理:二分查找(Binary Search) 又称折半查找,它是一种效率比较高的查找方法。但是,这种查找方法的前提是:“已经排序好的线性表”。我们的一维数组就是线性表。一位数组中的成员数据必须已经排序好了,才能用二分法来进行查找操作。排序可以是升序,也可是降序。 二分查找法也是一种通过关键字比较的查找方法。他的原理就是用关键字与被查找数据集(如一维数组)的中间位置(以下均是指下标)的数据比较。我们假设有一个20个数据的一位数组,升序。[a1,a2,a3,........,a20] 我们要查找的数据值为Key 。中间位置的计算方法为:mid=(首+尾)/2的底。“首”是指第一个数组成员的下标数组成员的下标值,“尾”在易语言自然是命令“取数组成员数(数组)”的值。“底”相当于易语言中的“取整”命令如本例mid=(1+20)/2=10.5 取底mid=10 则首先Key与数组的第10个

成员进行比较。如果Key>a10,那么我们要找的数据就可能在数组的第11到20成员之间,反之,Key #include #include #include #define LIST_INIT_SIZE 100 //线性表存储空间的初始分配量 #define LISTINCREMENT 10 //线性表存储空间的分配增量typedefstruct { int *elem; //存储空间基址 int length; //当前长度 int listsize; //当前分配的存储空间(以sizeof(ElemType)为单位) }Sqlist; void initlist_sq(Sqlist &l) { l.elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int)); l.length=0; //空表长度为0 l.listsize=LIST_INIT_SIZE; //初始存储容量

数据结构第七章参考答案

习题7 1.填空题 (1)由10000个结点构成的二叉排序树,在等概率查找的条件下,查找成功时的平均查找长度的最大值可能达到(___________)。 答案:5000.5 (2)长度为11的有序序列:1,12,13,24,35,36,47,58,59,69,71进行等概率查找,如果采用顺序查找,则平均查找长度为(___________),如果采用二分查找,则平均查找长度为(___________),如果采用哈希查找,哈希表长为15,哈希函数为H(key)=key%13,采用线性探测解决地址冲突,即d i=(H(key)+i)%15,则平均查找长度为(保留1位小数)(___________)。 答案:6,3,1.6 (3)在折半查找中,查找终止的条件为(___________)。 答案:找到匹配元素或者low>high? (4)某索引顺序表共有元素275个,平均分成5块。若先对索引表采用顺序查找,再对块元素进行顺序查找,则等概率情况下,分块查找成功的平均查找长度是(___________)。 答案:31 (5)高度为8的平衡二叉树的结点数至少是(___________)。 答案: 54 计算公式:F(n)=F(n-1)+F(n-2)+1 (6)对于这个序列{25,43,62,31,48,56},采用的散列函数为H(k)=k%7,则元素48的同义词是(___________)。 答案:62 (7)在各种查找方法中,平均查找长度与结点个数无关的查找方法是(___________)。 答案:散列查找 (8)一个按元素值排好的顺序表(长度大于2),分别用顺序查找和折半查找与给定值相等的元素,平均比较次数分别是s和b,在查找成功的情况下,s和b的关系是(___________);在查找不成功的情况下,s和b的关系是(___________)。 答案:(1)(2s-1)b=2s([log2(2s-1)]+1)-2[log2(2s-1)]+1+1 (2)分两种情况考虑,见解答。 解: (1)设所有元素的个数为n,显然有s=n*(n+1)/(2n),则 n=2s-1 设折半查找树高度为k,则前k-1层是满二叉树,最后一层的节点数为 n-(2k-1 -1) 因此,总比较次数 nb=20*1+21*2+22*3+…+2k-2*(k-1)+(n-(2k-1 -1))*k, 而 20*1+21*2+22*3+…+2k-2*(k-1)=2k-1*k-2k+1 因此 nb=2k-1*k-2k+1+(n-(2k-1-1))*k=(n+1)k-2k+1 又k=[log2n]+1,n=2s-1,所以有 (2s-1)b=2s([log2(2s-1)]+1)-2[log2(2s-1)]+1+1 (2)查找不成功,对于顺序查找有:s=n。对于折半查找,找不到的情况有n+1种,查找

用二分法求方程在区间[0,1]内的根,精确到3位有效数字

计算方法实验报告 实验内容: 用二分法求方程0sin 2=--x e x 在区间[0,1]内的根,精确到3位有效数字。 实验前预备内容: 1. 计算机基础知识 2. 熟悉变成基本思想 3. 熟悉常见基本函数 实验程序: #include #include #define eps 5e-6 #define delta 1e-6 float Bisection(float a,float b,float(*f)(float)) { float c,fc,fa=(*f)(a),fb=(*f)(b); int n=1; printf("二分次数\t\tc\t\t f(c)\n"); while(1) { if(fa*fb>0) { printf("不能用二分法求解"); break; } c=(a+b)/2,fc=(*f)(c); printf("%d\t\t%f\t\t%f\n",n++,c,fc); if(fabs(fc)

} int main(int argc,char *argv[]) { float a=0,b=1; float x; x=Bisection(a,b,f); printf("|n方程的根为%0.4f",x); return 0; }计算过程: 运行1次 根的值为:x = 0.500 运行2次 根的值为:x = 0.750 运行3次 根的值为:x = 0.875 运行4次 根的值为:x = 0.937 运行5次 根的值为:x = 0.906 运行6次 根的值为:x = 0.921 运行7次 根的值为:x = 0.914 运行8次 根的值为:x = 0.917 运行9次 根的值为:x = 0.919 运行10次 根的值为:x = 0.920 运行11次 根的值为:x = 0.921 根的最终值为:x = 0.921 Press any key to continue 最终运算结果: 根的最终值为:x = 0.921

数据结构作业系统_第七章答案

③试基于图的深度优先搜索策略写一算法, 判别以邻接表方式存储的有向图中是否存在由顶 点vi到顶点vj的路径(i≠j)。注意:算法中涉及 的图的基本操作必须在此存储结构上实现。 实现下列函数: Status DfsReachable(ALGraph g, int i, int j); /* Judge if it exists a path from vertex 'i' to */ /* vertex 'j' in digraph 'g'. */ /* Array 'visited[]' has been initialed to 'false'.*/ 图的邻接表以及相关类型和辅助变量定义如下:Status visited[MAX_VERTEX_NUM]; typedef char VertexType; typedef struct ArcNode { int adjvex; struct ArcNode *nextarc; } ArcNode; typedef struct VNode { VertexType data; ArcNode *firstarc; } VNode, AdjList[MAX_VERTEX_NUM]; typedef struct { AdjList vertices; int vexnum, arcnum; } ALGraph; Status DfsReachable(ALGraph g, int i, int j) /* Judge if it exists a path from vertex 'i' to */ /* vertex 'j' in digraph 'g'. */ /* Array 'visited[]' has been initialed to 'false'.*/ { int k; ArcNode *p; visited[i]=1; for(p=[i].firstarc;p;p=p->nextarc) { if(p) { k=p->adjvex; if(k==j)return 1; if(visited[k]!=1)

哈希表和二分查找等高效查找法(数的Hash,串的Hash)

3349Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 22532 Accepted: 5874 Description You may have heard that no two snowflakes are alike. Your task is to write a program to determine whether this is really true. Your program will read information about a collection of snowflakes, and search for a pair that may be identical. Each snowflake has six arms. For each snowflake, your program will be provided with a measurement of the length of each of the six arms. Any pair of snowflakes which have the same lengths of corresponding arms should be flagged by your program as possibly identical. Input The first line of input will contain a single integer n, 0 < n≤ 100000, the number of snowflakes to follow. This will be followed by n lines, each describing a snowflake. Each snowflake will be described by a line containing six integers (each integer is at least 0 and less than 10000000), the lengths of the arms of the snow ake. The lengths of the arms will be given in order around the snowflake (either clockwise or counterclockwise), but they may begin with any of the six arms. For example, the same snowflake could be described as 1 2 3 4 5 6 or 4 3 2 1 6 5. Output If all of the snowflakes are distinct, your program should print the message: No two snowflakes are alike. If there is a pair of possibly identical snow akes, your program should print the message: Twin snowflakes found. Sample Input 2 1 2 3 4 5 6 4 3 2 1 6 5 Sample Output

数据结构第8章 查找 答案

第8章查找测试题及答案一、填空题 1. 在数据的存放无规律而言的线性表中进行检索的最佳方法是顺序查找(线性查找)。 2. 线性有序表(a,a,a,…,a)是从小到大排列的,对一个给定的值k,用二分法检索表中与k相123256等的元素,在 查找不成功的情况下,最多需要检索8 次。设有100个结点,用二分法查找时,最大比较次 数是7。 3. 假设在有序线性表a[20]上进行折半查找,则比较一次查找成功的结点数为1; 比较两次查找成功的结点数为 2;比较四次查找成功的结点数为 8;平均查找长度为 3.7。 5解:显然,平均查找长度=O(logn)<5次(2)。但具体是多少次,则不应当按照公式2m来计算(即 (21×log21)/20=4.6次并不正确!)。因为这是在假设n=2-1的情况下22n推导出来的公式。应当用穷举法罗列:全部元素的查找次数为=(1+2×2+4×3+8×4+5×5)=74; ASL=74/20=3.7 !!!4.【计研 题2000】折半查找有序表(4,6,12,20,28,38,50,70,88,100),若查找表中元素20, 它将依次与表中元素 28,6,12,20比较大小。 5. 在各种查找方法中,平均查找长度与结 点个数n无关的查找方法是散列查找。 6. 散列法存储的基本思想是由关键字的值决定数 据的存储地址。 7. 有一个表长为m的散列表,初始状态为空,现将n(n

二分法查找

【二分查找法】 【二分查找法】 二分查找又称折半查找,它是一种效率较高的查找方法。 【二分查找要求】:1.必须采用顺序存储结构 2.必须按关键字大小有序排列。 【优缺点】折半查找法的优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除比较困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。 【算法思想】首先,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字, 则进一步查找前一子表,否则进一步查找后一子表。 重复以上过程,直到找到满足条件的记录,此时查找成功,或直到子表不存在为止,此时查找不成功。 二分查找又叫折半查找,但是有一个前提条件,就是你要查找的数据必须是按顺序储存,以关键字大小来排列的。 例如 如果是整形数组,存放0~9这10个数,数组必须按0到9(升序)或者9到0(降序)挨个储存。 如果你数组的元素之字符串,字符串的首字母就得按

a~z或者z~a挨个储存,当最高位相同时比较次高位。当你保证数组有序后,就可以开始执行二分查找了。举个例子 1,3,6,8,9,10,11,15 如果你要查找的数字是10,查找过程如下 由于一共有7个元素,比较最中间的元素,即第四个,10>9,由于是升序排列,选择9的右边三个数进行比较,,这就将比较次数缩短了一半。在右半部分再去中间元素,即11,10<11,选取11左边部分进行比较,即和10进行比较,得到要找的元素。 当然也存在找不到的情况,比如找12,先与9比,范围缩小至右半部分,跟11比,在此基础上再缩小至现有右半部分,只剩一个15,不相等,即没找到想要的元素。 这就是一个递归缩小范围的过程 C语言代码 int halfSearch(SeqList * R,int n , KeyType K ){ //在有序表R[0..n-1]中进行二分查找,成功时返回结点的位置,失败时返回-1

数据结构作业系统_第七章答案

数据结构作业系统_第七章答案7.22? 试基于图的深度优先搜索策略写一算法, 判别以邻接表方式存储的有向图中是否存在由顶 点vi到顶点vj的路径(i?j)。注意:算法中涉及 的图的基本操作必须在此存储结构上实现。 实现下列函数: Status DfsReachable(ALGraph g, int i, int j); /* Judge if it exists a path from vertex 'i' to */ /* vertex 'j' in digraph 'g'. */ /* Array 'visited[]' has been initialed to 'false'.*/ 图的邻接表以及相关类型和辅助变量定义如下: Status visited[MAX_VERTEX_NUM]; typedef char VertexType; typedef struct ArcNode { int adjvex; struct ArcNode *nextarc; } ArcNode; typedef struct VNode { VertexType data; ArcNode *firstarc; } VNode, AdjList[MAX_VERTEX_NUM]; typedef struct { AdjList vertices;

int vexnum, arcnum; } ALGraph; Status DfsReachable(ALGraph g, int i, int j) /* Judge if it exists a path from vertex 'i' to */ /* vertex 'j' in digraph 'g'. */ /* Array 'visited[]' has been initialed to 'false'.*/ { int k; ArcNode *p; visited[i]=1; for(p=g.vertices[i].firstarc;p;p=p->nextarc) { if(p) { k=p->adjvex; if(k==j)return 1; if(visited[k]!=1) if(DfsReachable(g,k,j))return 1; } } return 0; } 7.23? 同7.22题要求。试基于图的广度优先搜索策略写一算法。实现下列函数:

相关文档
最新文档