我目前是一名CS本科生,正在学习数据结构课程。在这个学期中,我们学习了大O符号,其中有一个作业要求我们写出计算1+2+3+…+n的大O符号。我认为,在最简单的方法中,您会循环从1到n,并在每次迭代中将i添加到总和中,因此看起来这将是O(n)时间复杂度。
我也知道,可以将这个特定的求和表达为(n(n + 1))/ 2,以更直接的方式获得答案。
我的教授坚持认为,在这两种情况下,时间复杂度都是O(n ^ 2),我已经通过电子邮件与他来往希望得到更好的解释,但他基本上每次都发同样的回复。
我觉得我必须首先不理解大O符号的目的。即使我在程序中实现这两种找到总和的方法并测量执行时间,循环方法的时间似乎基于n的大小呈线性增长,而在第二种方法中,无论n有多大,所需的时间都相同,因为在这种情况下没有迭代发生。
请问有人能帮助我理解为什么这仍然是O(n ^ 2)吗?