高斯和的编程方法比数学方法更好吗?

问题描述 投票:0回答:1

我不太擅长优化问题或原理,但问老师在课堂上问的问题似乎很有趣。考虑到执行时间,哪个选项更好,或者 n 有多大重要?

数学方法:

int sum=n*(n+1)/2;

迭代方法:

int sum=0;
for(int i=1;i<=n;i++)
    sum=sum+i;

我在 C 中尝试了两种方法,但执行时间不断变化,这对我来说有点奇怪。

c math optimization mathematical-optimization
1个回答
0
投票
int sum = n * (n + 1) / 2;

这是一个以 O(1) 时间复杂度执行的数学运算。 这里所花费的时间是恒定的,与大小无关 𝑛 n,因为它不涉及任何迭代

int sum = 0;
for (int i = 1; i <= n; i++) {
    sum = sum + i;
}

这涉及到一个执行循环 𝑛 n次。 时间复杂度为 O(n),因为操作数量随 𝑛

© www.soinside.com 2019 - 2024. All rights reserved.