数学算法

bab*_*doc 2 algorithm math optimization performance mathematical-optimization

我试图理解算法的概念,以及它们如何提高计算机程序的性能.

所以假设,我必须编写一个程序,生成一个数字列表,

  1. 从数字1开始.

  2. 添加3.

  3. 将结果(1 + 3 = 4)存储在列表中.

  4. 将5添加到新号码.

  5. 将结果(4 + 5 = 9)存储在列表中.

  6. 保持另外将3和5添加到列表中的最新数字.

现在这是一个非常简单的程序,并且假设程序必须在数字大于10,00,000时停止,并且假设一个简单的程序执行此操作需要10秒来生成列表.

如何为此问题设计算法,以便程序花费较少的时间来生成列表.

注意 - 我试图通过一个例子来理解这里的概念,上面提到的时间是随机的而不是事实的.如果有人能够帮助我用一个"简单"的例子来理解这个概念,如果他们不想使用上面的例子那就太棒了.

Jer*_*fin 7

您上面给出的内容(生成列表的步骤列表)一种算法.

效率的显着提高通常意味着从一种算法转换到另一种算法,以较少的工作完成相同的目标.例如,对于上面的算法,您可能会尝试完全避免创建列表(如此),而是替换可以快速生成列表中任何特定点的结果的算法 - 给定N作为输入,它将做点什么

int n = N/2; 
int m = N-n; 
return 1 + n * 3 + m * 5;
Run Code Online (Sandbox Code Playgroud)

请注意,这段代码可能并不完全正确(我认为它不能正确处理奇数与偶数输入数字),但是你得到了一般的想法 - 而不是执行一系列操作来获得一个结果,它执行少得多的操作以产生相同的结果.