(共34张PPT)
第10课 猜数游戏有捷径
授课人:曾老师
第三单元 用算法解决问题
学习目标
通过猜数游戏认识二分法,从具体情境中确定二分法查找的对象、范围和判断条件。
1
了解二分法在生活中的应用,知道用二分法解决简单的实际问题,初步体会用算法解决问题的优势。
2
情境思考
课堂导入
有一排巧克力,里面只有一块加了大量果仁,已知果仁比巧克力重,那么查找这块果仁巧克力的方法有哪些?
情境思考
课堂导入
有一排巧克力,里面只有一块加了大量果仁,已知果仁比巧克力重,那么查找这块果仁巧克力的方法有哪些?
可以从最左边开始,一块一块掰开找,总能够找到!
可以从中间掰开,称一称两边的重量。然后从重的一边再继续掰开称重。
情境思考
课堂导入
有一排巧克力,里面只有一块加了大量果仁,已知果仁比巧克力重,那么查找这块果仁巧克力的方法有哪些?
可以从最左边开始,一块一块掰开找,总能够找到!
可以从中间掰开,称一称两边的重量。然后从重的一边再继续掰开称重。
顺序查找
情境思考
课堂导入
可以从最左边开始,一块一块掰开找,总能够找到!
顺序查找
从第一个对象开始,逐一查找
找到符合条件的对象或找遍全部对象
……
情境思考
课堂导入
有一排巧克力,里面只有一块加了大量果仁,已知果仁比巧克力重,那么查找这块果仁巧克力的方法有哪些?
可以从最左边开始,一块一块掰开找,总能够找到!
可以从中间掰开,称一称两边的重量。然后从重的一边再继续掰开称重。
情境思考
课堂导入
有一排巧克力,里面只有一块加了大量果仁,已知果仁比巧克力重,那么查找这块果仁巧克力的方法有哪些?
可以从最左边开始,一块一块掰开找,总能够找到!
可以从中间掰开,称一称两边的重量。然后从重的一边再继续掰开称重。
二分法查找
情境思考
课堂导入
可以从中间掰开,称一称两边的重量。然后从重的一边再继续掰开称重。
确定中间对象
依据比较结果缩小查找范围
比较中间对象与目标对象
……
找到符合条件的对象
二分法查找
学习活动
一 体验猜数游戏
三 用二分法解决问题
二 二分法查找的算法描述
学习活动
学习活动一:体验猜数游戏
学习活动1:体验猜数游戏
你玩过猜数字游戏吗
学习活动1:体验猜数游戏
游戏规则
两个同学一组,依据以下规则,玩一玩猜数游戏。
1.有一个1到100之间的自然数,通过猜测的方式来确定这个数。
2.每次猜测并说出一个数后会得到一个提示:说出的数相对于要猜的数是大了还是小了,或者猜对了。
3.通过不断缩小数值范围来逼近要猜测的数,直到猜对这个数。
学习活动1:体验猜数游戏
游戏规则
1. 一位同学默想一个数,让另一位同学猜。
2. 两位同学各猜一轮,记录猜测的次数和结果,填写记录表。
3. 在猜数过程中,观察、思考猜数范围的变化规律。
猜测次数 1 2 3 4 5 6 7
猜测对象 50
判断结果 小了
猜数范围 51~100
学习活动1:体验猜数游戏
1. 在这个游戏中,已知信息是什么?
要猜的数在 1 至 100 之间。
2. 猜数的判断条件是什么?
判断条件是说出的数与被猜的数比较之后,所了解到的数是“大了”“小了”还是“对了”。
学习活动1:体验猜数游戏
观察猜数范围的变化规律,可以发现:
如果猜的数不正确,猜数的范围就可以根据猜数的位置逐渐缩小,直到找到符合的数。
猜数范围越小,猜出指定数的可能性就越大。
是否有快速缩小猜数范围的算法呢?
肯定有方法的,那就是用二分法。
学习活动1:体验猜数游戏
认识二分法
二分法是一种高效的搜索算法,适用于在有序数据中查找目标数。
二分法通过将查找范围不断分成两半,并与目标值进行比较,选取目标值所在的那一半,从而迅速缩小查找范围。
例如,在1至100的自然数中,要猜测的数是58时,用二分法来猜,第1次猜50,然后继续细分,最多只需猜4次,就可以把范围缩小为51至61,再进一步细分,很快就会获得答案。
使用二分法在1到100之间猜一个数,最多需要猜几次?
使用二分法在1到100之间猜一个数,最多需要猜7次。
学习活动二:二分法查找的算法描述
学习活动2:二分法查找的算法描述
当数值范围扩大到1至1000时,用二分法来猜所需次数大约是10次。如果继续把数值范围继续扩大到1至10000、1至100万,所需的猜测次数大约分别是14次和20次。
相比按顺序依次猜测的方式,猜测次数大大减少了。
学习活动2:二分法查找的算法描述
第1步:在要查找的一组有序数中,取中间位置的数与要查找的数比较,如果两者相等,则查找成功。
算法描述
第2步:如果不相等,就以中间位置的这个数为分界,把这组数分成两部分。中间位置的数大于查找数,则进一步查找比这个数小的那部分;否则进一步查找比这个数大的那部分。
第3步:重复以上两个步骤,直到找到满足条件的数。
学习活动2:二分法查找的算法描述
如果我们让计算机来玩这个猜数游戏,它会怎么做呢?
可以将猜数字游戏做成人机交互程序,让用户猜数,计算机出题并根据用户猜数结果实现游戏反馈自动化。
学习活动2:二分法查找的算法描述
编程实现
输入数据
用户反复输入数字进行猜测,直到答对为止。由于数字一直在变化中,可以用一个变量来表示,如cai。
处理数据
计算机主要是对用户输入的数字和目标数的大小进行比较判断。为了让程序更具有普遍性,可以用一个变量来表示目标数,如da。cai和da之间存在“大于”“小于”“等于”三种关系。
输出数据
根据 cai和da的大小关系,输出三种提示。
学习活动2:二分法查找的算法描述
编程实现
学习活动2:二分法查找的算法描述
编程实现
学习活动2:二分法查找的算法描述
编程改进
学习活动三:用二分法解决问题
寻找拿错快递的人
学习活动3:用二分法解决问题
在早上8时到晚上8时之间,快递员放在小区货架上的一箱货物不知道被谁错拿了,但有监控摄像头一直可以拍摄到这个货架。现在需要查看监控视频,找到拿错快递的人。
请想办法提高查看监控视频的效率,帮助快递员尽快找到货物。
寻找拿错快递的人
学习活动3:用二分法解决问题
方法提示:
把二分法用于解决生活中的实际问题。利用二分法查看监控视频,即首先查看视频的中间处(下午2时),看丢失的货物是否还在。如果还在,就继续查看后半段视频的中间处(下午5时);如果不在,就查看前半段视频的中间处(上午11时)。
以此类推,不断缩小查看的范围。
学习活动3:用二分法解决问题
1. 二分法的核心思想是什么?
每次将范围缩小一半。
2. 二分法适用于哪些场景?
有序数据、大规模数据。
3. 二分法相比其他方法有什么优势?
高效、快速。
课堂总结
课堂总结
1.利用二分法猜数,可以快速缩小要猜的数值范围。
2.在实际生活中,合理利用二分法来解决问题,可以提高效率。
3.使用算法解决问题时,不同的算法对问题解决的效率也会不同,不同的数据规模也会影响算法的效率。
拓展与提升
拓展与提升
“猜一猜我在哪里”游戏。
下图中的一个圆圈表示一个位置,一位同学想定一个位置并写下来,让另一位同学猜这个位置,每猜一次提示对方偏向了哪个方向,直到猜对为止。
好 好 学 习
天 天 向 上
授课人:曾老师