课件编号17697679

4.3非数值计算 课件(共17张PPT) -2022—2023学年高中信息技术教科版(2019)必修1

日期:2024-05-17 科目:信息技术 类型:高中课件 查看:43次 大小:1945353Byte 来源:二一课件通
预览图 1/7
2023,必修,2019,教科,信息技术,高中
  • cover
(课件网) 第四单元 非数值计算 4.3 非数值计算 --探寻“汉诺塔”中的奥秘 e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276 二分查找/折半查找 p112 二分思想:将数列有序排列,采用跳跃的方式查找数据。 左边界 flag1 右边界 flag2 目标数x 中间数 mid !!!若中间数mid比目标数x大,则区间变为左半区间,右边界更新 左边界 flag1 右边界 flag2 目标数x 中间数 mid !!!若中间数mid比目标数x小,则区间变为右半区间,左边界更新 在有n个元素的有序序列中,利用二分查找大约需要log2n次。 n = 1000 需要10次 方法:以递增数列为例,以中点位置元素作为比较对象,若要查找元素值小于该中点元素,将待查找序列缩小为左半部分,否则为右半部分。每次比较后都能将查找区间缩小一半。 找一半 按照顺序找一半, 一比较,舍一半。 继续找一半, 一半又一半, 快速找答案! e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276 分治策略: 其设计思想为,将一个难以直接解决的大问题,分割成较小的同类问题,各个击破,最终达到解决问题的目的。 A B C D E F G H I 需要解决的问题 第一次分割 第二次分割 第三次分割 二分查找 e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276 有了实际操作经验,我们来尝试完善下面的二分查找程序。 填充代码,调试程序 优势:明显减少比较次数,提高查找效率; 局限:被查找数据必须是有序的。 e7d195523061f1c0c2b73831c94a3edc981f60e396d3e182073EE1468018468A7F192AE5E5CD515B6C3125F8AF6E4EE646174E8CF0B46FD19828DCE8CDA3B3A044A74F0E769C5FA8CB87AB6FC303C8BA3785FAC64AF5424764E128FECAE4CC72BD54E486F2F2A60F51B8A1D54097D49F626B96969F5CCE921267A92A2F22AC8A839D5EE3DCAA21587D0441DCE9CD8276 如果输入的数据不在范围内,会出现什么结果呢?程序还需要在哪些地方进行完善?大家一起来试试吧。 x=int(input(“请输入要查找的数据:")) step=0 #记录查找次数 flagl=l #目标区域左边界 flag2=400 #目标区域右边界 if x>flag2 or x1) #区间数据范围小于1则结束循环 mid=(flag1+flag2)/2 #中间值 step=step+1 #查找次数加1 if mid>x: flag2=mid #有边界前移 elif mid

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