用户:
SKQA查看:1 回复:3 评论:1 创建时间:2020-06-10T22:39:05
效率和执行时间有关,也和问题规模有关。问题规模是指算法输入的大小、数量。比如搜索一个列表中的某一个元素,随着列表元素数量增加,程序的运行时间也会增加。脚本如下:
scratch中的列表最多200000项,所以就生成200000项。用i遍历列表,如果找到就说出并停止搜索。最极端的情况就是列表中没有findNum(我设置的1633290543761),经测试用时大约1.6秒。对于一些要求较高、比较庞大的程序,这样的速度简直是太慢了!这就是因为问题规模。有没有办法减少该算法执行的时间?使用快速排序(quickSort)和二分查找(binarySearch)即可大幅缩减执行的时间,因篇幅原因不展示脚本。
再来一个案例,判断一个数是否为质数。在kitten中实验,数值很大时kitten依然执行速度很快。用scratch尝试,执行速度超慢:
结果可能会让你大吃一惊~
执行速度超慢!分析便知,数值3000017的对称乘数是根号3000017,即√(3000017),乘法满喵换律,那么只需测试根号3000017以内的值!
(下图节选程序,其他同上)
此时执行速度超快!这就是问题规模的影响,极大地缩减时间,提高效率。
