课件编号19556920

4.3 非数值计算 课件(共34张PPT)教科版必修1

日期:2024-05-17 科目:信息技术 类型:高中课件 查看:84次 大小:1669803Byte 来源:二一课件通
预览图 1/12
数值,计算,课件,34张,PPT,教科
  • cover
(课件网) 教科版(2019版) 信息技术(高中) 4.3 非数值计算 第4单元 计算与问题解决 必修1 数据与计算 学习目标 1.运用合适的算法形成解决问题的方案 2.了解算法设计中的分治思想,并运用二分查找解决实际问题 3.体验递归的方法,并结合具体问题开展编程实践 教学重点 理解二分思想、递归思想,运用二分算法解决实际问题 教学难点 理解递归算法 程序源代码及执行结果截图: 巧翻字典 PROJECT PEOFILE 假设一本字典有1000页,老师藏了一条秘密信息在其中一页。现在通过运行“找神秘信息.py”文件,找到相应页码中的这条信息!并告诉我你用几次找到的? 实践 统计查找次数 假设信息在第328页。如何去找到该页的信息呢。 实践 统计查找次数 P101 次数 翻至页码 下一步决策 第1次 500 往前 1-499 第2次 250 往后 251-499 第3次 375 往前 251-374 第4次 312 往后 313-374 第5次 343 往前 313-342 第6次 327 往后 328-342 第7次 335 往前 328-334 第8次 331 往前 328-330 第9次 329 往前 328-328 第10次 328 策略 1 找到区间的中位数 策略 2 根据情况确定更精确的区间 二分查找/折半查找 p101 二分思想:将数列有序排列,采用跳跃的方式查找数据。 分治策略 将难以直接解决的大问题,分割成较小的同类问题 方法:以递增数列为例,以中点位置元素作为比较对象,若要查找元素值小于该中点元素,将待查找序列缩小为左半部分,否则为右半部分。每次比较后都能将查找区间缩小一半。 找一半 按照顺序找一半, 一比较,舍一半。 继续找一半, 一半又一半, 快速找答案! 左边界 flag1 右边界 flag2 目标数 x 中间数 mid !!!若中间数mid比目标数x大,则区间变为左半区间,右边界更新 左边界 flag1 右边界 flag2 目标数 x 中间数 mid !!!若中间数mid比目标数x小,则区间变为右半区间,左边界更新 在有n个元素的有序序列中,利用二分查找大约需要log2n次。 二分查找/折半查找 p101 n = 1000 需要10次 二分思想:将数列有序排列,采用跳跃的方式查找数据。 程序编写 P 102 ABOUT US 统计二分查找次数的源代码和程序运行截图: “汉诺塔”游戏源于一个古老的印度传说。如下图所示,在木板上有A、B、C三根杆,A杆上有若干木盘,规定每次移动一个木盘。且小的木盘只能叠在大的木盘上面。请设计算法,用尽可能少的次数把所有的木盘从A杆全部移到C杆上。 课堂活动2 玩转“汉诺塔”游戏 COOPERATION “汉诺塔”游戏源于一个古老的印度传说。木板上有A、B、C三根杆,A杆上有若干木盘,规定每次移动一个木盘,且小的木盘只能叠在大的木盘上面。请设计算法,用尽可能少的次数把所有木盘从A杆全部移到C杆上。 移动方法:以移动3个木盘为例,根据木盘叠放规则,要使A杆上最大的木盘(记为x)移动到C杆上,必须先把x上方的所有木盘移动到B杆上,然后再将A杆上最大的木盘移到C上,最后再将B上所有的木盘移动到C杆上。 编程如下: def hanno(n,s,m,t): #定义一个函数,n层塔,将盘子从s借助m移动到t if n==1: print(s,'-->',t) #将一个盘子从s移动到t else: hanno(n-1,s,t,m) #将前n-1个盘子从s移动到m上 print(s,'-->',t) #将最底下的最后一个盘子从s移动到t上 hanno(n-1,m,s,t) #将m上的n-1个盘子移动到t上 #主程序 n=int(input('请输入汉诺塔的层数:'))#调用函数,将n个木盘从A借助B移动到C hanno(n,'A','B','C') input("运行完毕,请按回车键退出...") 以三个木盘为例 A B C A B A C A B C C B A C C B A B C B A A B C A C 规律总结 三步移动 将A上面两个木盘从A B 将A最下面的一个木盘从A C 将B上面两个木盘从B C 将A上面一个木盘从A C 将B最下面一个木盘从A B 将C上面一个木盘从C B ... ...

~~ 您好,已阅读到文档的结尾了 ~~