浙江高中信息技术对分查找算法公开课课件
合集下载
高中信息技术选修1课件-2.4 查找2-浙教版

次 数3 2
31
3
2
34
d(1) d(2) d(3) d(4) d(5) d(6) d(7) d(8) d(9)
Key 10 15 17 18 22 27 35 45 48
次
数3 2
34
1
3
2
3
4
数组中每个数据的查找次数:
对分查找算法的最多查找次数 由于对分查找过程中的每次比较都能
使搜索范围减半,根据规律可以得出: [log2n]+1
玩一玩
猜价格:31——40
对分查找算法原理
(1)对分查找是效率很高的查找方法,但
前提是被查找的数据必须是有序的。 (2)首先将查找的数与有序数组内处于中 间位置的数据比较,如果中间位置上的数
与查找的数不同,根据有序性,就可确定
应该在数组的前半部分还是后半部分继
续查找。 (3)在新确定的范围内,继续按上述方法 进行查找,直到获得最终结果。
1
10
m
d(m)
找不到
5
22
第二次
1
4
2
15
第三次
3
4
3
17
第四次
4
4
4
18
第五次
5
4
总结规律
继续进行重复查找的条件? i<=j 根据i,j的初值,计算出中间位置m, 比较Key与d(m),相等则输出,否则确 定新i或新j,直到找到为止,这循样环结重构复 操作可以采用什么结构?
Do while i<=j
loop
对分查找流程图
开始
If语句格式
m (i+j)\2
Y im+1
浙教版高中信息技术高一《对分查找算法》课件

平度一中 赵术升 zhaoshusheng@
While l_o_w_<_=__h_ig_h
mid=(low+high)\2 ‘mid指向low和high中点 if d(mid)=key then print“找到了”: exit sub ‘找到了,退出sub if d(mid)<key then low=mid+1 ‘low指向中间后面的下标
有序
7 14 18 21 23 29 31 35 38
中间
为社会负责,为学生终身发展负责
一、对分查找的过程。
要找的数据与处于中间的数据比较 如果=,找到, 如果>中间的数,就在后一半找, 如果<中间的数,就在前一半找, 后面继续相同的策略,直到获取最终结果
为社会负责,为学生终身发展负责
二、合作探究:对例子进行剖析
整除运算符号:\,这样mid=(low+high)\2,舍去小数部分。
(2)查找商品价格key=19
为社会负责,为学生终身发展负责
三:拓展提升:完成对分查找程序(在网站上提交)
数组d(1 to 9)递增整型数组
Private Sub command1_Click() Low=1 ‘初始时下标low指向1 High=9 ‘初始时下标high指向9
If_d_(m__id__)>_k_e__y_then high=mid-1 ‘high指向中间前面的下标
Loop Print “没找到” ‘执行本语句,说明没有找到 End Sub
为社会负责Leabharlann 为学生终身发展负责四、大显身手:程序实现:对分查找算法完美解决CCTV《幸运52》 猜价格,需要填空,编译和运行。 (在网站上提交)
单击提交并编译 单击后如有语法错误 单击后如无语法错误
While l_o_w_<_=__h_ig_h
mid=(low+high)\2 ‘mid指向low和high中点 if d(mid)=key then print“找到了”: exit sub ‘找到了,退出sub if d(mid)<key then low=mid+1 ‘low指向中间后面的下标
有序
7 14 18 21 23 29 31 35 38
中间
为社会负责,为学生终身发展负责
一、对分查找的过程。
要找的数据与处于中间的数据比较 如果=,找到, 如果>中间的数,就在后一半找, 如果<中间的数,就在前一半找, 后面继续相同的策略,直到获取最终结果
为社会负责,为学生终身发展负责
二、合作探究:对例子进行剖析
整除运算符号:\,这样mid=(low+high)\2,舍去小数部分。
(2)查找商品价格key=19
为社会负责,为学生终身发展负责
三:拓展提升:完成对分查找程序(在网站上提交)
数组d(1 to 9)递增整型数组
Private Sub command1_Click() Low=1 ‘初始时下标low指向1 High=9 ‘初始时下标high指向9
If_d_(m__id__)>_k_e__y_then high=mid-1 ‘high指向中间前面的下标
Loop Print “没找到” ‘执行本语句,说明没有找到 End Sub
为社会负责Leabharlann 为学生终身发展负责四、大显身手:程序实现:对分查找算法完美解决CCTV《幸运52》 猜价格,需要填空,编译和运行。 (在网站上提交)
单击提交并编译 单击后如有语法错误 单击后如无语法错误
高中信息技术对分查找

B
D
C
C
B
C
C
a> d(m)
j- result+ 1 4
第二单元 查找算法
课时34 二分查找
1、二分查找的概念 二分查找是一种高效的查找方法。 二分查找的前提是,被查找的数据序列是有序的(升序或降序)。 基本思想:在有序的数列中,首先将要查找的数据与有序数列内处
于中间位置的数据进行比较,如果两者相等,则查找成功;否则就根据 数据的有序性,再确定该数据的范围应该在数列的前半部分还是后半部 分;在新确定的缩小范围内,继续按上述方法进行查找,直到找到要查 找的数据,即查找成功,如果要查找的数据不存在,即查找不成功。
2、二分查找的过程
若key为查找键,数组d存放n个已按升序排序的数据。在使用二分查找 时,把查找范围[i,j]的中间位置上的数据d(m)与查找键key进行比较,结果必 然是如下三种情况之一:
(1)若key<d((m,j)内不可能存在值为key的数据,必须在新的范 围(i,m-1)中继续查找;
(2)key=d(m),找到了需要的数据; (3)key>d(m),由与(1)相同的理由,必须在新的范围(m+1,j)中 继续查找。
这样,除了出现情况(2),在通过一次比较后,新的查找范围将不超过 上次查找范围的一半。中间位置数据d(m)的下标m的计算方法:m=(i+j)\2或 m=fix((i+j)/2)
高中信息技术浙教版:数据查找教学课件(共19张PPT)

⑤如果中值不是查找键,则判定下一个查找范围应该在左 半部分还是在右半部分。注意i和j的控制。
if f==True:
⑥输出查找结果:f=True,mid中存储的即为查找键
print("查找成功!下标为"+str(mid)) Key在数组 d中的位置,f=False表示查找键key在数
else:
组d中不存在。
对分查找——算法演示
d[3] 4 d[4] 5 d[5] 6
第3次查找:
范围为__d_[_3_]_~_d[_5_]_,i=____3____,
←i ←mid
j=__5___,mid=____(_3+_5_)_/_/_2_=4。 d[mid]=__d_[_4_]_=5____。
←j d[mid]_=_=___key=5?
←i 第2次查找: 范围为__d_[_0_]_~_d[_5_]_,i=_____0___,
←mid j=__5___,mid=____(_0+_5_)_/_/_2_=2。 d[mid]=__d_[_2_]_=_3___。
←j d[mid]_<____key=5?
:后续查找的范围应该是 _______d_[_3_]_~_d[_5_]_。
查找成功,结束查找。
对分查找——流程图描述
开始
i=0,j=12
i<=j Y
mid =(i+j)//2
Y
d[mid]=key?
N
N
查找成功
Y
d[mid]<ke y?
N
i=mid+1
j=mid-1
结束
查找失败
对分查找——程序实现
key=int(input());f=False;i=0 #所有数据(升序)存储在数组d中
排序算法--堆排序与对分查找课件-浙教版(2019)高中信息技术选修1

堆排序算法
排序算法
·图解堆排序算法(升序)
列表a: 40 38 65 97 76 13 27 49 10 索引: 0 1 2 3 4 5 6 7 8
i
40
7
38
65
9
97
76 13 27
49 10
7 40
列表a: 40 38 65 97 76 13 27 49 10 索引: 0 1 2 3 4 5 6 7 8
然后继续安排原先节点所在位置的前一个节点,重复比较+ 交换的过程,一直安排完所有元素。
注意: 构造堆结构时,真正构造堆结构会有元素移动的,一般是
从最后一个非叶子节点开始。
堆排序算法
·图解堆排序算法(升序)
列表a: 40 38 65 97 76 13 27 49 10 7 索引: 0 1 2 3 4 5 6 7 8 9
列表a: 40 38 65 97 76 13 27 49 10 7 索引: 0 1 2 3 4 5 6 7 8 9
堆排序算法
排序算法
·图解堆排序算法(升序)
②从最后一个元素开始,对列表进行构造堆结构。 规则: 当前元素节点和其左右孩子节点比较,若孩子节点比较大,
则把该节点和其孩子节点中最大的交换位置。若该节点交换后的 位置,还有孩子节点,则继续比较,直至完成堆结构。
①根节点元素与末尾元素进行交换
堆排序算法
排序算法
·图解堆排序算法(升序)
列表a: 7 索引: 0
76 65 49 40 13 27 38 10 97 123456789
7
76
65
49
40 13 27
38 10 97
②调整交换后的堆结构(调整根节点即可), 调整的元素个数减一。
2024新高考浙江版高中信息技术专题二 算法与程序基础知识点归纳讲解PPT

例1 下列有关算法的与程序的关系叙述中正确的是 ( ) A.算法是对程序的描述 B.算法决定程序 ,是程序设计的核心 C.算法是唯一的,程序可以多种 D.程序决定算法,是算法设计的核心 解析 程序是对算法的描述;解决一个问题可以有多种算法,一种算法可 以用多种语言编写程序;算法是程序设计的核心。
答案 B
6.顺序结构的程序实现 1)顺序结构的程序代码执行方式是自上而下、依次执行的。 2)在Python中,“#”后面的内容为注释,主要对代码说明,并不执行。 3)Python常见的内建函数
函数 print(x) input ([prompt]) int(object) float(object) abs(x) help() len(seq) str(x)
3)控制转移:根据数据或运算结果的特点进行不同的处理。 二、算法的描述 1.用自然语言描述算法 用自然语言描述算法通俗易懂,且不需要进行专门的学习和训练。但也 容易产生歧义,描述比较烦琐。 2.用流程图描述算法 1)特点:结构清晰、寓意明确。 2)流程图基本图形及其功能
图形
名称 开始/结束符
输入/输出 框 处理框
4.变量与赋值 1)变量:在程序运算过程中变量的值可以改变。为了能对变量进行访问 需要对变量进行命名。在Python中,变量名可以由字母、数字、下划线 组成,但不能以数字开头,而且字母区分大小写,同时不能使用保留字。 2)赋值运算符:“=”“-=”“+=”“*=”“/=”“%=”等。 5.字符串、列表和字典 1)字符串 ①字符串用单引号、双引号或三引号表示;②字符串是不可变对象;③通 过索引来访问字符串的字符;④通过切片操作可以获得字符串的一个子 串。
3-1 (2021浙教版期末考专项复习,5)设计流程图应该在计算机编程解决 问题的哪一步完成 ( ) A.抽象建模 B.设计算法 C.编写程序 D.调试运行程序 答案 B
高中信息技术选修1课件-2.4 查找1-浙教版

j=8 j=3 m=4 m=2 i=3 m=3
任务一
数组: d(1)
2
45正确
价格
d(2) d(3) d(4) d(5) d(6) d(7) d(8)
5 6 9 45 87 93 98
比较次 数
比较范 围
中间位
中间数
Key与d(m)的关系
i、j的变化
第一次 i= j= m= d(m )= 第二次 i= j= m= d(m)= 第三次 i= j= m= d(m)= 第四次 i= j= m= d(m)=
ben benson
d(5)
colin
d(6)
denny
d(7)
frank
i=1
j=7
比较次数 比较范围 中间位 中间数 Key与d(m)的关系
第一次 第二次 第三次 第四次
i= j= i= j= i= j= i= j=
m= d(m )= m= d(m)= m= d(m)= m= d(m)=
i、j的变化
对分查找的效率
Key
N个有序数,最快查找次数: 1 N个有序数,最慢查找次数: int(log2N)+1
任务三
Key
市图书馆共有1024*1024=1048576本书,书名按升序排序, 使用对分查找算法查找某本书,每次比较需要10毫秒的时间,无论是 否找到,最多需要多长时间就可以保证找到要找的书?使用顺序查找, 最多需要多长时间才能找到要找的书?顺序查找平均查找时间是多少?
1-1000都是同类 数据
他们顺序有关系吗?
从小到大排序
前提 条件
其它顺序可以吗?
升序或降序都可以
不是递增1的序列可以吗
比如:2、5、6、9、 45、87、93、98?
任务一
数组: d(1)
2
45正确
价格
d(2) d(3) d(4) d(5) d(6) d(7) d(8)
5 6 9 45 87 93 98
比较次 数
比较范 围
中间位
中间数
Key与d(m)的关系
i、j的变化
第一次 i= j= m= d(m )= 第二次 i= j= m= d(m)= 第三次 i= j= m= d(m)= 第四次 i= j= m= d(m)=
ben benson
d(5)
colin
d(6)
denny
d(7)
frank
i=1
j=7
比较次数 比较范围 中间位 中间数 Key与d(m)的关系
第一次 第二次 第三次 第四次
i= j= i= j= i= j= i= j=
m= d(m )= m= d(m)= m= d(m)= m= d(m)=
i、j的变化
对分查找的效率
Key
N个有序数,最快查找次数: 1 N个有序数,最慢查找次数: int(log2N)+1
任务三
Key
市图书馆共有1024*1024=1048576本书,书名按升序排序, 使用对分查找算法查找某本书,每次比较需要10毫秒的时间,无论是 否找到,最多需要多长时间就可以保证找到要找的书?使用顺序查找, 最多需要多长时间才能找到要找的书?顺序查找平均查找时间是多少?
1-1000都是同类 数据
他们顺序有关系吗?
从小到大排序
前提 条件
其它顺序可以吗?
升序或降序都可以
不是递增1的序列可以吗
比如:2、5、6、9、 45、87、93、98?
2018高中信息技术浙教版浙江参考课件:3-3 查找算法的

关闭
B
解析 答案
-12考点1 考点2
变式22016年浙江有4.6万考生参加高考,小张想查询自己的成绩, 高考成绩已按学籍号排序,假设从中取出一条记录并与待查项进行 比较所花的时间为6毫秒,则用对分查找法在考生信息中查到成绩 最多花费的时间是( ) A.28万毫秒 B.8万毫秒 C.96毫秒 D.80毫秒
第三章
查找算法的程序实现
-2-
知识条目 1.顺序查找 2.对分查找
考试要求 c c
考试属性 加试
-3考点1 考点2
考点 1
顺序查找
查找是一种能以比较少的步骤或较短的时间找到所需对象的一 种查询技术。常见的查找方法有顺序查找和对分查找。 顺序查找的基本思想:从第一个数据开始,按照数据的顺序逐个 将数据与给定的值进行比较,若某个数据与给定值相等,则查找成 功,找到所查数据的位置;反之,则查找不成功。顺序查找算法简单, 对数据表中的元素是否有序没有要求,N个元素的顺序查找过程中 数据比较的次数最多是N次。 顺序查找的程序结构: k=0(k用来保存与要查找数据key相等的元素的下标) 让 i 从 1 到 n 循环
关闭
数组b记录下标值,该下标记录的是元素在数组a中的位置。
关闭
B
解析 答案
-15考点1 考点2
例3在已排序的数组a(数据元素a(1)≤a(2)≤…≤a(n))中查找键 值为key的数,其对分查找的VB程序段如下: i=1∶j=n∶xb=0 Do While ① m=Fix((i+j)/2) If a(m)=key Then xb=m Exit Do ElseIf key<a(m) Then j=m-1 Else ②
-7考点1 考点2
画线处的语句是( ) A.a(i)>key B.a(i)<key C.a(i)=key D.a(i)<>key 解析:根据顺序查找的基本思想,依次将数组元素a(1)到a(8)跟查 找键值key比较,若相等,显示找到结果并退出循环,否则继续查找。 程序实现时,变量i用来表示第几次查找,而a(i)则是第i次查找时被 访问到的数组元素。如果某个数组元素a(i)的值等于key则将该数 组元素的下标值i显示在Text1文本框中,并通过Exit For来结束查找。 故画线处的条件表达式为“a某电视台有一档与观众互动的猜价格的节目,如出示一件1 000元以内的物品让观众进行竞猜。如果某件物品的价格为250元, 采用对分查找法,则此价格被猜中至少需要的次数是( ) A.1 B.2 C.3 D.4
B
解析 答案
-12考点1 考点2
变式22016年浙江有4.6万考生参加高考,小张想查询自己的成绩, 高考成绩已按学籍号排序,假设从中取出一条记录并与待查项进行 比较所花的时间为6毫秒,则用对分查找法在考生信息中查到成绩 最多花费的时间是( ) A.28万毫秒 B.8万毫秒 C.96毫秒 D.80毫秒
第三章
查找算法的程序实现
-2-
知识条目 1.顺序查找 2.对分查找
考试要求 c c
考试属性 加试
-3考点1 考点2
考点 1
顺序查找
查找是一种能以比较少的步骤或较短的时间找到所需对象的一 种查询技术。常见的查找方法有顺序查找和对分查找。 顺序查找的基本思想:从第一个数据开始,按照数据的顺序逐个 将数据与给定的值进行比较,若某个数据与给定值相等,则查找成 功,找到所查数据的位置;反之,则查找不成功。顺序查找算法简单, 对数据表中的元素是否有序没有要求,N个元素的顺序查找过程中 数据比较的次数最多是N次。 顺序查找的程序结构: k=0(k用来保存与要查找数据key相等的元素的下标) 让 i 从 1 到 n 循环
关闭
数组b记录下标值,该下标记录的是元素在数组a中的位置。
关闭
B
解析 答案
-15考点1 考点2
例3在已排序的数组a(数据元素a(1)≤a(2)≤…≤a(n))中查找键 值为key的数,其对分查找的VB程序段如下: i=1∶j=n∶xb=0 Do While ① m=Fix((i+j)/2) If a(m)=key Then xb=m Exit Do ElseIf key<a(m) Then j=m-1 Else ②
-7考点1 考点2
画线处的语句是( ) A.a(i)>key B.a(i)<key C.a(i)=key D.a(i)<>key 解析:根据顺序查找的基本思想,依次将数组元素a(1)到a(8)跟查 找键值key比较,若相等,显示找到结果并退出循环,否则继续查找。 程序实现时,变量i用来表示第几次查找,而a(i)则是第i次查找时被 访问到的数组元素。如果某个数组元素a(i)的值等于key则将该数 组元素的下标值i显示在Text1文本框中,并通过Exit For来结束查找。 故画线处的条件表达式为“a某电视台有一档与观众互动的猜价格的节目,如出示一件1 000元以内的物品让观众进行竞猜。如果某件物品的价格为250元, 采用对分查找法,则此价格被猜中至少需要的次数是( ) A.1 B.2 C.3 D.4
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
n =1 ,解得 k 2
k= log 2 N
顺序查找与对分查找比较
是否需要 事先排序 平均查找次数
顺序查找
不需要
(n+1)/2 多 Log2n 少
对分查找
需要
Key = Val(Text2.Text) i=1 j = num Do While i <= j m = (i + j) \ 2 If d(M) = Key Then Label6.Caption = "在数组的 " + Str(M) + " 位置中" Exit Sub End If If d(M) < Key Then i=m+1 Else j=m-1 End If Loop Label6.Caption = "在数组中没有找到" + Str(Key)
写法二
Key = Val(Text2.Text) i=1 j = num Do While i <= j m = (i + j) \ 2 If d(M) = Key Then Label6.Caption = "在数组的 " + Str(M) + " 位置中" Exit Sub ElseIf d(M) < Key Then i=m+1 Else j=m-1 End If Loop Label6.Caption = "在数组中没有找到" + Str(Key)
12 13 14 15 16
在规模为n的数组变量d中进行对分查找的流程图
开始
I←1 ,j←n
i<=j? Y 计算中点m← (i+j)\2 d(m)=key? Y N Y D(m)<key? N i←m+1 j←m-1 结束 N
未找到,输出结果:0
找到,输出结果:m
代码分析command4的click过程
如果输入查找的元素值key=22
i=1 i=2 i=3 i=4 i=5
此时i等于5,超过数组中元素个数,找不到
顺序查找的流程图
开始
i 1
N
i<=n?
Y
d(i)=key?
N
Y
未找到,输出结果:0
找到,输出结果:i
i
i+1 结束
转化成程序
Private Sub Command6_Click() '顺序查找 Key = Val(Text2.Text)
输入查找的元素值key=32
d d d d
(1) (2) (3) (4) d d d d (1) (2) (3) (4)
27 36 32 18 27 36 32 18
i=1 i=2 i=3
从数组d的第1个元素d(1) 开始,依次判断各元素的 值是否与查找键key的值相 等。
此时d(i)=key,数组中的第3个位置
For i = 1 To num
If d(i) = Key Then Label5.Caption = "在数组的 " + Str(i) + " 位置中" Exit For End If
Next
If i = num + 1 Then Label5.Caption = "在数组中没有找到" + Str(Key) End If End Sub
比较
顺序查找是一种基本、简单的查找算法, 但查找的效率往往过低; 对分查找时每次都把查找范围缩小一半
对分查找算法数据次数较少,效率较高, 但它要求数组中的数据是有序的。
对分查找效率分析
假设查找k次,依次查找的区间长度为
n n n n , 2 , 3 …… k 1 2 2 2 2
,最坏情况下,找到最后,区间剩下为1,即
16
J=16
数组d( ): Key=52
下标
元素
1 2 3
10 15 17
4
我们用变量 I和J记录所 要查找范围的起始和终止 位置
18
22 27 35 45
5 6 7 8 9 10
48
52 65 67 72
I=9
第2次比较: Key<d(m) 查找范围应该 变成d(9)~d(11)
11
12 13 14 15 16
查找算法
顺序查找和对分查找
查找算法
查找是一种查询数据的技术,其目标是能以比较少 的步聚和较短的时间找到所需的对象
顺序查找的基本思想
是从第一个数据开始,按数据的顺序逐个 将数据与给定的值进行比较。若某个数据和给 定的值相等,则查找成功,找到所查数据的位 置;反之,查找不成功。
(flash流程图)
顺序查找
对分查找的基本思想
对分查找的前提是数据已经有序(以递增为例), 然后把待查找的数据与数组中间位置的数比较, 如果比中间位置的数大,在数组的后半部分继续 查找,否则在数组的前半部分查找,继续对分查 找,直到找到待查找的数在数组中的位置或数组 已无法对分
猜数游戏 Flash流程图
下标
元素
1
10 15 17
I=1
(1)过程:
2 3 4 5 6 7 8
我们用变量 I和J记录所 要查找范围的起始和终止 位置
18
22 27 35 45 48 52 65 67
Key=52 数组d(i ):
M=Int((i+j)/2)
=8
9
10 11 12 13 14 15
72
85 97 98
第1次比较: Key>d(m) 查找范围应该 变成d(9)~d(16)
M=Int((i+j)/2)
=12
85
元素
1 2
10 15 17
Key=52
3
4
5 6 7 8 9 10
18
22 27 35 45 48 52 65 67 72 85 97 98
第3次比较: Key=d(m) 找到了 I=9 M=Int((i+j)/2) J=11 =10
11