二分法查找数据

  • 格式:pptx
  • 大小:378.75 KB
  • 文档页数:15

下载文档原格式

  / 15
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

下面这段程序的执行结果是什么?(课 件展示问题,请学生回答) Dim i As Integer Dim zifu(25) As String For i=0To 25 zifu(i)=chr(65+i) Next i
分别将A~Z赋值给zifu数组的 每个元素。
这是一个猜1至1000内的整数,程序分“人 猜”与“电脑猜”两部分,总分100分,猜错 1次扣10分,猜对时得分最高者获胜,出现的 整数都是随机的。程序界面如图。
那么什么是数组呢? 如果有一组元素包括大、小写字母及空 格共 53 个,如何定义一个数组表示 (数组名称为 zifu )?(课件展示问题, 请两名学生回答) 数组(Array)是一组相同类型的 变量集合,集合中的每个元素都 是独立的变量,它们能够通过数 组序号被引用。 dim zifu(52) as string
如何用最笨的方法来猜整数,那将怎样猜?
从1一直猜到1000
新课的学习:
理解二分法查找算法的思想后,大家思考一 下,二分法查找对查找的数据有何要求?
数据应该是有序的。
下面我们剖析该程序“电脑猜”部分的 “开始”、“大了”按钮的程序代码。
“通用”部分声明:
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
教学延伸:
利用二分法求函数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、复习本课的内容。 2、上网查找并学习二分法查找相关VB知识。 (课外教学延伸) 3、尝试使用二分法算法求其它数学方程的近似值 (如y=3x-7x-8等方程),思考生活学习中还有 哪些问题可使用二分法算法解决,试着编程实现。
课堂任务:
1、在课程学习网站上,下载并运行“人与电脑竞 猜商品价格PK”程序,理解其代码的含义,试写 出其“小了”按钮的程序代码。 2、思考应用二分法查找有什么优点和缺点?顺序 查找有哪些优点和缺点?
课堂小结
二分法查找 1、什么是二分法P55 2、二分法查找的基本算法思想P55 3、顺序查找与二分法查找的特点: (1)二分法:优点是减少了查找的次数,提高了 查找效率。缺点是必须是在有序数组中才能使用。 (2)顺序查找:优点是 算法简单,对数组的结 构无任何要求。缺点是查找效率低,当数组的元 素个数较多时不宜采用该方法查找。
二分法查找数据
课题导入
程序设计中经常需要进行数据的查找与存储,设计查 找算法时,往往要考虑算法的实现是否方便、快捷, 而引入数组的使用,及在数组中查找数据的基本方法, 即顺序查找与二分法查找等。
教学重难点
重点:二分法的算法基本思想及相关的 程序实现。 难点:如何使用二分法在数据组中查找 数据,及解决一些实际的的问题(如使 用二分法求数学方程的近似解等)。
“大了”按钮的程序剖析: 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