分析下`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
的大小无关。