time-complexity - 1+2+3+...+n 的大 O 表示法
问题描述
我目前是一名 CS 本科生,就读于数据结构课程。在学期中,我们学习了大 O 表示法,在一项作业中,我们必须写出将数字 1+2+3+...+n 相加的大 O 表示法。我认为,在最简单的方法中,您将从 1 循环到 n 并且在每次迭代中将 i 添加到总和中,所以这似乎是 O(n) 时间。
我也知道这个特定的总和可以表示为 (n(n+1))/2 作为接收答案的更直接的方式。
我的教授坚持说,在这两种情况下,时间复杂度都是 O(n^2),我一直在给他发邮件希望得到更好的解释,但他每次都发送基本相同的回复。
我觉得我首先误解了 big-O 的目的。即使我实现了这两种在程序中求和并计算执行时间的方法,循环方法的时间似乎会根据 n 的大小线性增加,而在第二种方法中,它需要相同的时间量无论 n 有多大,因为在这种情况下没有发生迭代。
有人可以帮我理解为什么这仍然是O(n ^ 2)吗?
解决方案
您正在计算错误值的顺序。
正如您在评论中指出的那样,这个问题并没有问求和的时间复杂度是多少。问题是求和本身的顺序是什么。实际上 1 + 2 + ... + n 是 O(n²)。
推荐阅读
- css - 如何在css中一个一个地垂直显示项目?
- python - 检查值是否满足 Django 模型的条件
- python - ImportError:无法导入名称“relu6”和 AttributeError:模块“keras.applications.mobilenet”没有属性“relu6”
- sql - 基于持续时间的给定一天分钟的 SQL 更新计数器(按顺序)
- android - Web Worker 是在主 ui android 线程还是单独的线程上运行?
- amazon-web-services - 无法删除 S3 对象,“拒绝访问”
- wix - 在 WinpE 中运行 Wix MSI 安装
- azure - Spring Boot OAuth2 和 Azure AD
- javascript - 使用 sessionStorage 在页面刷新时保持子菜单显示
- python - 如何将卷积层添加到自定义估计器