我正在尝试理解算法的概念,以及它们基本上如何提高计算机程序的性能。
所以假设,我必须编写一个程序来生成一个数字列表,
以数字 1 开头。
加 3。
将结果 (1+3=4) 存储在列表中。
将 5 添加到新数字。
将结果 (4+5=9) 存储在列表中。
不断将 3 和 5 添加到列表中的最新数字。
现在这是一个非常简单的程序,假设当数字大于 10,00,000 时程序必须停止,并假设执行此操作的简单程序需要 10 秒来生成列表。
如何为这个问题设计一种算法,使程序生成列表的时间更短。
注意- 我试图通过一个例子来理解这里的概念,上面提到的时间是随机的而不是事实。如果有人不想使用上面的例子,如果有人能用一个“简单”的例子帮助我理解这个概念,那就太好了。
最佳答案
您在上面给出的(生成列表的步骤列表)是一种算法。
效率的显着提高通常意味着从一种算法更改为另一种算法,从而以更少的工作完成相同的目标。例如,对于上面的算法,您可能会尝试完全避免创建列表(如此),而是代之以可以快速生成列表中任何特定位置的结果的算法——给定 N 作为输入,它将做类似的事情
int n = N/2;
int m = N-n;
return 1 + n * 3 + m * 5;
请注意,这段代码可能并不完全正确(我认为它不能非常正确地处理奇数与偶数输入数字),但你得到了一般的想法 - 而不是执行整个系列的操作来获得一个结果,它执行的操作数量要少得多才能产生相同的结果。
关于performance - 数学算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14159615/