猫史档案馆


【教程帖】算法入门 九、问题规模(scratch!scratch!scratch!)

用户:SKQASKQA查看:1 回复:3 评论:1 创建时间:2020-06-10T22:39:05


效率和执行时间有关,也和问题规模有关。问题规模是指算法输入的大小、数量。比如搜索一个列表中的某一个元素,随着列表元素数量增加,程序的运行时间也会增加。脚本如下:

center_image

scratch中的列表最多200000项,所以就生成200000项。用i遍历列表,如果找到就说出并停止搜索。最极端的情况就是列表中没有findNum(我设置的1633290543761),经测试用时大约1.6秒。对于一些要求较高、比较庞大的程序,这样的速度简直是太慢了!这就是因为问题规模。有没有办法减少该算法执行的时间?使用快速排序(quickSort)和二分查找(binarySearch)即可大幅缩减执行的时间,因篇幅原因不展示脚本。

再来一个案例,判断一个数是否为质数。在kitten中实验,数值很大时kitten依然执行速度很快。用scratch尝试,执行速度超慢

center_image

结果可能会让你大吃一惊~

center_image

执行速度超慢!分析便知,数值3000017的对称乘数是根号3000017,即√(3000017),乘法满喵换律,那么只需测试根号3000017以内的值

(下图节选程序,其他同上)

center_image

center_image

此时执行速度超快!这就是问题规模的影响,极大地缩减时间,提高效率。

emotion_编程猫_加油


回复

上一页1 页 / 共 1下一页
SKQASKQA

喵=足 交

点赞0


评论


BW妖妖灵(2号)BW妖妖灵(2号)

但是没有什么人看就很尴尬了。

点赞0


评论


Chengxuyee_已退Chengxuyee_已退

一万兆=1京

点赞0


评论