对分查找导学案

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

对分查找导学案(复习课)
【学习目标】
学习目标:熟练掌握对分查找的基本思想和算法实现。

重点把握:1.对分查找的算法实现 2.用对分查找算法实现插入排序
3. 通过分步解析获取对分查找的解题结构,初步掌握对分查找算法的变式练习。

【课前复习】
对分查找基本思想:首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。

重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

【课堂导学】 一、复习对分查找 对分查找的的算法实现
i = 1: j = n: flag = False
Do While i <= j And flag = False
m = Fix((i + j) / 2)
If d(m) = key Then
flag = True
ElseIf d(m) > key Then i = m + 1 Else
j = m – 1 End If Loop
二、对分插入
d(1)~d(9)中值依次如下,循环结束时各变量的值,填写表格
插入新数,插入保持数组依然有序,用对分的方式找到插入的正确位置
①新数在原数组中不存在
插入11,把11存储到__________ 插入7,把7存储到__________
插入1,把1存储到__________
小结:当插入的新数在原数组中不存在是,插入的位置是_____________
②如果新数在元素中存在,如插入新数是8
约定:如果已存在相同的数据,则把该数据存储到同数据的右边
用对分查找插入的数的正确位置,在划线处填入正确的VB代码
③key = Val(Text1.Text)
i= 1: j = n
Do While i <= j
m = (i + j) \ 2
If ____________ Then
i = m + 1
Else
j = m - 1
End If
Loop
④对分插入的完整(步骤1:查找插入位置;步骤二:移动原数组的数据:步骤三:插入新数)步骤二和步骤三实现如下
For k=n to i step –1
d(k+1)=d(k)
Next j
d(i)=key 该处的变量i也可以___________________________用来表示
三、找满足某条件的数据区间
思想以下两种情况:对分查找结束时,i和j合理的值
找出小于9的所有数据 i=___________ j=___________
找出小于8的所有数据 i=___________ j=___________
四、两个数组结合应用对分
两个数组结合以后应用对分查找
pos = 0: i = 1: j = 5
Do While i <= j
m =______________
If _________= Key Then
pos = _______
Exit Do
ElseIf __________Then
j = m - 1
Else
i = m + 1
End If
Loop
五、二叉树的使用
1.若数组元素d(1)~d(8)的值依次是“86,75,58,46,20,18,12,5”当输入不同的key值Label1上显示的不同结果有_____种。

方法1:要分析所有可能的情况,分析找到的情况8种,找不到的情况有9中,统计所有的情况的n值,统计最后n的可能值。

n=0:i=1:j=8
key=val(text1.Text)
do while i<=j
m=(i+j)\2
if key=d(m) then exit do
if key>d(m) then
j=m-1: n=n-1 else
i=m+1: n=n+1 end if loop
Label1.Caption=str(n)
方法2:用二叉树辅助统计出所有n 的可能情况
分析:在二叉树中
2.变化
如果把key 的赋值修改成右侧两种情况,会产生何种变化__________________________,n 的值分别是________和__________.
【课后巩固】
1. 有如下程序段,文本框中输入 19 后单击命令按钮,sum,left 的值是( ) Private Sub Command1_Click()
Dim m, n, sum, left, mid, key, s As Integer Dim a(1 To 13) As Integer a(1) = 2: a(2) = 3: a(3) = 8: a(4) = 16: a(5) = 19: a(6) = 27
a(7) = 29: a(8) = 32: a(9) = 49: a(10) = 64: a(11) = 72: a(12) = 99 m = 1: n = 12
key = Val(Text1.Text) mid = (m + n + 1) \ 2
Do While a(mid) <> key And m <= n
If a(mid) > key Then n = mid - 1: left = left + 1 Else m = mid + 1 mid = (m + n) \ 2 sum = sum + 1 Loop End Sub
key=val(text1.Text) key=Int(rnd*100)+0.5
key=Int(rnd*31)+15
A.1 1 B.1 2 C.2 1 D.2 2
2.有如下 VB 程序段:
i = 1: j = 8
key = Text1.Text: f = False
Do While i <= j And Not f
m = Int((i + j) / 2)
If a(m) = key Then
f = True: List1.AddItem Str(m) + " is good luck!"
ElseIf a(m) > key Then
j = m - 1: List1.AddItem Str(m)
Else
i = m + 1: List1.AddItem Str(m) End If
Loop
If Not f Then List1.AddItem "sorry!"
a(1)到 a(8)依次为 "as"、"book"、"can"、"pig"、"see"、"you"、"we"、 "zero"。

当在文本框 Text1 中输入以下哪个内容时,列表框 list1 中显示的结果和别的三项不一样()A. pear B. quick C.run D. sad。

相关文档
最新文档