分析下`sum = n * (n - 1) / 2`的时间复杂度是什么?

sum = n * (n - 1) / 2 的时间复杂度是 O(1),也就是常数时间复杂度。

分析:

这个表达式只涉及到基本的算术运算(乘法、减法、除法),这些运算的执行时间与输入规模 n 无关。无论 n 的值有多大,计算 n * (n - 1) / 2 的时间都是固定的。

与循环对比:

如果使用循环来计算 1 + 2 + ... + n 的和,时间复杂度会是 O(n),因为循环需要执行 n 次。而使用公式 n * (n - 1) / 2 可以直接计算结果,避免了循环,因此时间复杂度是 O(1)。

总结:

虽然表达式中包含了 n,但这并不意味着时间复杂度与 n 相关。时间复杂度指的是算法执行时间随输入规模增长的变化趋势,而在这个例子中,执行时间是固定的,与 n 的大小无关。

posted @ 2024-12-14 06:15  王铁柱6  阅读(29)  评论(0)    收藏  举报