选修1《查找》ppt-高中信息技术省公开课金奖全国赛课一等奖微课获奖PPT课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
所以,除了出现情况(2),在经过一次比较后,新查找范围大约是原查找 范围二分之一。
〖举例〗观察图2.22对分查找过程中查找范围改变。
6
6/17
对分查找过程中查找范围改变
d
1 2 ←i
25
37
4
8
5 15
6 17
7 22
8 25 ←m
9 37
10 42 11 55 12 67 13 72
14 75
15 87
2.4 查找
2.4.1 什么是查找
查找(search)是一个查询数据或信息技术,其目标是能以比较少步骤或较短 时间找到所需对象。查询方法很多,对不一样数据结构有不一样查找方法。比如, 对以排序好固定规模数据序列进行查找时,其方法有对分查找等;对一些复杂结 构查找,可用树型查找方法等等。查字典、查资料是我们经常进行查找工作,在 这里,是以在程序某个数组变量中存放一批数据内,寻找出特定一个数据,或者 确定在该数组内无这么数据,作为查找目标。通常,程序将按照查找结果(找到或 未找到)来决定执行后面哪个计算步骤。
5 15
因 d[m]=key 故输出: “找到,数组下标值是:” & m
6 17
7 22 ←i,j,m
8 25
9 37
10 42
11 55 12 67
因key=22,d[m]=22
13 72
14 75
15 87 16 92
11
11/17
对分查找过程中查找范围改变
d
d
d
d
1
2
25
3
7
4
8
5 15
6 17
16
16/17
★小结 1、掌握查找概念; 2、次序查找是按照数组元素先后次序,从第一个元素开始进行遍历, 逐一检验是否和查找键相等。 3、对分查找前提是待查找数据是有序。对分查找是先取中间元素和 查找键比较,若不相等则缩小近二分之一查找范围,在剩下元素中继 续查找。 4、对分查找效率远高于次序查找。 5、在数组中查找结果,若找到,输出结果是,值为 key 数据所在 数组元素下标;若未找到,输出结果是,0。
8
8/17
对分查找过程中查找范围改变
d
1 2 ←i
25
3
7
4 8 ←m
5 15
6 17
7 22 ←j
8 25
9 37
10 42
11 55
12 67
13 72
14 75
15 87
16 92
j=m-1=8-1=7
int((i+j)/2)=int((1+7)/2)=4
第2次:i←1,j←7,m←4,key←22 因 key>d[m],故(i,m)范围不存在值为key数据。
输出:若找到,结果是,值为 key 数据所在数组元素下标。 未找到,结果是,0。
5
5/17
对分查找基本方法是:在查找范围(i,j)内,能够利用数据有序性,而无须 逐一数据地进行查找,进行简单地计算后,可得到查找范围中点位置,并使用变量 如m,统计这个中点位置。
把查找范围(i,j)中点位置上数据 d[m] 与查找键 key 进行比较,结果必定 是以下三种情况之一:
8
5 15
6 17 ←m 6 17
7 22 ←j
7 22
8 25
8 25
9 37
9 37
10 42
10 42
11 55
11 55
12 67
12 67
13 72
13 72
14 75
14 75
15 87
15 87
16 92
16 92
←i,j,m
P38图2.22对分查找过程中查找范围改12变 12/17
2、对分查找算法流程图
第3次:i←5,j←7,m←6,key←22 因 key>d[m],故(i,m)范围不存在值为key数据。
因key=22,d[m]=17
10
10/17
对分查找过程中查找范围改变
d
i=m+1=6+1=7
1
2
int((i+j)/2)=int((7+7)/2)=7
2
5
3
7
4
8
第4次:i←7,j←7,m←7,key←22
1
1/17
2.4.2 次序查找
1、观察次序查找处理过程 假定被查找数据(如8个)存放在有8个元素数组变量 d 中,要寻找数 据(这个数据称为查找键)已经存放在变量 key 中。
[次序查找算法输入输出说明] 输入:查找键(设在变量 key 中)。
被查找数据(设在数组变量 d 中)。 输出:若找到,结果是,值为 key 数据所在数组元素下标。
16 92
←j
int((i+j)/2)=int((1+16)/ 2)
第1次:初值 i←1,j←16,m←8,key←22 因key=22,d[m]=25
因 key<d[m],故(m,j)范围不存在值为key数据。
7
7/17
Grammar
金手指考试网 / 年金手指驾驶员考试科目一 科目四 元贝驾考网 科目一科目四仿真考试题C1
使用对分查找算法在含有n个数据数组变量d中查找key时,因事先并不能确 定比较次数,但能够经过条件来控制重复是否继续进行。每进行一次比较后, 当情况(1)(key< d[m] )或(3)(key> d[m] )出现(即还未找到key)时, 应把原查找范围二分之一作为新查找范围,在这个新范围内继续查找key。 但这是需要前提,即新查找范围内必须最少有一个数据。由此得到继续进行 重复条件是:
17
17/17
End If
4
4/17
2.4.3 对分查找
1、观察对分查找处理过程 假定被查找数据(如16个)存放在有16个元素数组变量 d 中,而且, 数组 d 是有序(已经按非递减次序排列)。要寻找数据(这个数据称 为查找键)已经存放在变量 key 中。(参考P38图2.22) [对分查找算法输入输出说明]
输入:查找键(设在变量 key 中)。 被查找数据(设在有序数组变量 d 中)。
i = 1: j = n: b = 0 Do While i <= j
m = Int((i + j) / 2) If d(m) = key Then
b=1 Text2.Text = "找到,数组下标值是:" & m Exit Do ElseIf d(m) < key Then i=m+1 Else j=m-1 End If Loop If b = 0 Then Text2.Text = "未找到,结果是:" & b End If
因key=22,d[m]=8
9
9/17
对分查找过程中查找范围改变
d
1
2
2
5
3
7
4
8
5 15 ←i
6 17 ←m 7 22 ←j
8 25
9 37 10 42 11 55 12 67
13 72
14 75 15 87 16 92
i=m+1=4+1=5
int((i+j)/2)=int((5+7)/2)=6
查找范围(i,j)中数据个数 j-i+1>0

i<=j
13
13/17
开始
i←1,j ←n
N
i<=j
Y
计算中点:m ←INT((I+j)/2)
Y
i←m+1
d[m] =key
N
d[m] <key
未找到,输出结果:0
Y
找到,输出结果:m
N
j←m-1
结束
14
14/17
3、对分查找算法VB编程代码(以规模为n数组d举例)
对分查找是先取中 间元素和查找键比 较,若不相等则缩 小近二分之一查找 范围,在剩下元素 中继续查找。
循环初始值
15
15/17
实践体验
当代化学元素周期律是1869年俄国科学家门得列夫(Dmitri Mendeleev)首创,他将当初已知63种元素依原子量大小并以表形式排列, 把有相同化学性质元素放在同一行,就是元素周期表雏形。利用周期表, 门得列夫成功预测当初还未发觉元素特征(镓、钪、锗)。1913年英国科学 家莫色勒利用阴极射线撞击金属产生X射线,发觉原子序越大,X射线频率 就越高,所以他认为核正电荷决定了元素化学性质,并把元素依照核内正 电荷(即质子数或原子序)排列,经过多年修订后才成为当代周期表。
(1) key< d[m] 查找键小于中点处数据 d[m] 。由数组d 中数据递增 性,能够确定:在(m,j)内不可能存在值为key 数据,必须在新范 围(i,m-1)中继续查找。 (2) key = d[m] 查找键等于中点处数据 d[m] 。找到了需要数据。
(3) key> d[m] 查找键大于中点处数据 d[m] 。依据与(1)类似理 由,必须在新范围(m+1,j)中继续查找。
7 22
8 25
9 37
10 42
11 55
12 67
13 72
14 75
15 87
16 92
←i 1 2
2
5
37
4
8
5 15
6 17
7 22
ห้องสมุดไป่ตู้←m 8 25
9 37
10 42
11 55
12 67
13 72
14 75
15 87
←j 16 92
←i ←m ←j
1
2
1
2
2
5
25
3
7
3
7
4
8
5 15 ←i
4
i=1
Do While i <= 8
If d(i) = key Then MsgBox "找到,数组下标值是:" & i, 0, "次序查找" m=1 Exit Do End If i=i+1
建立循环结构, 从第一个元素开 始遍历,逐一检 验是否与查找键 相等。
Loop
If m = 0 Then
MsgBox "未找到,结果是:" & m, 0, "次序查找"
未找到,结果是,0。
2
2/17
2、次序查找算法流程图
开始
i←1
i<=N?
Y
d[i] =key?
N
i←i+1
N Y
未找到,输出结果:0 找到,输出结果:i
结束
3
3/17
3、次序查找算法VB编程代码(以规模为8数组d举例)
m=0
key = Int(InputBox("请输入要查找数据,即查找键key值:", "对数组d进行次序查找", 0))
在周期表中,元素是以元素原子序排列,最小排行最先。表中一横行称为 一个周期,一列称为一个族。
1、主题(参考教材P39)
查找原子序数。
2、要求
元素周期表是化学学习中经常要使用,经过查阅元素周期表,我们能够知道元 素名称、元素符号、原子序数及原子量等信息。现在要求构建一个数组,按原 子序数存放对应元素元素符号。试设计一个算法,使得输入元素符号后,就能 快速查找到对应原子序数。
相关文档
最新文档