中小学教育资源及组卷应用平台 第09课 算法的评价方法 学习单 任务一、修改上述程序,增加一个变量t来统计while语句的执行次数,并显示数值。 mb=37 qs=1 while qs<101: if qs==mb: print("找到的数为:",qs) break else: qs=qs+1 任务二、体验算法试着完成下方表格。 算法 循环次数 效率评估 顺序查找 二分查找 任务三、想一想 在1~1000范围内查找目标数37,利用二分查找算法,循环执行的次数是多少 ( ) 任务四、在1~10000范围内,分别采用顺序查找和二分查找算法查找目标数1、50、100、1000、5000,测试循环的执行次数,估算使用的时间。 目标数 查找算法 循环执行次数 查找所用时间 1 顺序 二分 50 顺序 二分 100 顺序 二分 1000 顺序 二分 5000 顺序 二分 21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页) HYPERLINK "http://21世纪教育网(www.21cnjy.com) " 21世纪教育网(www.21cnjy.com)(
课件网) 哪条路径最优? 最优体现在 距离最短 用时最少 第9课 算法的评价方法 2023 年 级:六年级上 授课教师:XXX 讨论 解决某个问题可能会有多种不同的算法,如何评价算法的“好”与“差”呢? 评价标准: 正确性高 有效性好 执行效率快 一、算法评价的方法 当变量 qs 的值变为 37 时,语句总的执行次数约为 114 次。 你觉得这样的算法好不好?说说你的理由。 修改以下程序,增加一个变量t来统计while语句的执行次数,并显示数值。 1.参考书本P31; 2.用python打开”测试.py”; 3.完成学习单任务一。 任务一 二、算法评价体验 解决同一个问题的不同算法,在执行时算法的时间复杂度是有一定差异的。 同样是查找目标数 37,下述二分查找算法在执行时,变量 qs 的值依次取 50、25、37,也就是说,循环共执行了 3 次,与顺序查找算法相比,循环少执行34次,显然运行时间更短。 打开桌面文件名为:“顺序查找.py”和“二分法查找.py” 体验算法试着完成下方表格。 任务二 体验算法试着完成下方表格。 任务三 在1~1000范围内查找目标数37,利用二分查找算法,循环执行的次数是多少 ( ) 在1~10000范围内,分别采用顺序查找和二分查找算法查找目标数1、50、100、1000、5000,测试循环的执行次数,估算使用的时间。 任务四 这节课我们学习了算法的评价方法,我们要能评价算法的好与差,会通过体验多种算法的比较,从而得出哪种算法效率更好。mb=37 qs=1 while qs<101: if qs==mb: print("找到的数为:",qs) break else: qs=qs+1 #注意:测试时把文件的扩展名“.doc”去掉,然后用python打开即可。da = 37 #要查找的值,可以修改这个值 data_list = [i for i in range(1,101)] # 产生一个范围为1~100的有序数列 low = 0 # 设置数列的起始位置 ,Python中访问数列的起始位置从第0个开始 high = len(data_list)-1 # 设置数列的结束位置 ,Python中访问数列的结束位置为数列长度 -1 ci = 0 #用于统计执行次数的计次变量 ci while low <= high: ci += 1 # 执行一次循环,计次变量增加1 mid = (low + high) // 2 # 计算出中间数的位置 print(f'执行第{ci}次循环:在 {data_list[low]}~{data_list[high]}之间查找,中间值为{data_list[mid]}') if data_list[mid] == da: # 如果中间位置上数的值等于da, 显示:在数列的第n个位置上找到目标 print(f'在数列的第{mid}个位置上找到{da}啦!') break # 中断循环,程序结束 elif data_list[mid] > da: # 如果中间位置上的数的值大于da,说明da在中间数左边, 把查找数列的结束位置设置成中间位置-1 high = mid-1 else: # 如果中间位置上的数的值小于da,说明da在中间数右边, 把数列的起始位置设成中间位置+1 low = mid+1 else: p ... ...