java - 在 Java 中计算原始操作
问题描述
我正在尝试计算 Java 中的原始操作并偶然发现了这一点。我不知道为什么检索数组只占一个而不是两个。
我有这段代码:
arrayExample[j] = arrayExample[j] + 1; // 2 + 1 + 1 + 1 = 5
出于某种原因,我们计算读取j
两次,分配一次,添加一次和访问数组一次。
为什么这里没有两次访问数组?
提前致谢。
解决方案
通过“访问数组”,它们意味着读取那里的值。对数组的赋值是另一种数组访问,它只是被算作赋值而不是数组访问。
如果没有更正式的定义什么算作“基本操作”,这无论如何都是一个定义不明确的问题。我们可能会问为什么加载常量 1 不算作基本操作。(或者你可能很迂腐,检查 JVM 是否有一个不需要加载 1 作为常量的“增量”字节码操作。它确实如此。)或者你可能会问为什么只计算基本操作的数量是有意义的各种,当不同的基本运算(例如整数加法与浮点除法)具有不同的运行时间时。
对于大 O 分析,重要的是这里的基本操作的数量是一个常数,它不依赖于算法的任何输入的大小。无论您将其视为 4、5 还是 6 个基本操作都无关紧要,因为无论如何它都是 O(1) 基本操作。
推荐阅读
- python - 无法在 Linux 中安装适用于 Python 的 Snowflake 连接器
- postgresql - 如何查找或重置 Postgresql psql postgres 用户密码?
- c# - NuGet 包中的低版本 DLL
- java - 关于集群的 Cassandra 新手问题
- pdf - 如何将 React-pdf 的 Uint8array 转换为在 React 中显示为 PDF
- trello - Trello 有没有办法自动显示卡片创建者?
- html - 使用数组时相对于其上方的项目设置css top
- javascript - 反应拼接返回与我删除的相反?
- ssl - curl:(60)SSL证书问题:在代理后面上传时
- javascript - 接收端音频和视频之间的 Twilio 可编程视频 API 去同步