performance - 数学算法

标签 performance algorithm math optimization mathematical-optimization

我正在尝试理解算法的概念,以及它们基本上如何提高计算机程序的性能。

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

  1. 以数字 1 开头。

  2. 加 3。

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

  4. 将 5 添加到新数字。

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

  6. 不断将 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/

相关文章:

algorithm - 计算视差层世界坐标?

javascript - 为什么缩小或混淆的JavaScript比未压缩的代码性能更差?

javascript - jQuery:使用children()比使用子选择器更有效

c - 在 C 中,为什么 "signed int"比 "unsigned int"快?

javascript - HTML5 : Canvas performs too slow on lower end computers

c# - 递归 yield (RoR)

arrays - 你如何计算算法的大O

python - 通过查找模式从序列中生成下一个元素的算法

javascript - 检测一个点是否属于线段

algorithm - Splay 树最坏情况搜索时间