c# - 如果索引相距更远,按索引访问数组元素是否需要更长的时间?
问题描述
做类似的事情
Console.WriteLine(arr[0]);
Console.WriteLine(arr[1]);
取短于
Console.WriteLine(arr[0]);
Console.WriteLine(arr[1823]);
出于硬件级别的原因?
解决方案
访问数组元素或多或少是 O(1)。那是因为,当你这样做时myIntArray[500]
,你真的在做类似的事情memory_location + 500 * sizeof(int)
:
现在,从技术上讲,更大的数字需要更长的时间来相乘,但这种差异非常小,所以我们可以称之为 O(1),因此您的示例中的差异可能永远不会被感受到。
推荐阅读
- r - 如何用空白值替换 NA?
- maven - 仅从 Maven/JFrog 存储库下载 POM 文件
- android - Android:如何确定活动是否从应用程序外部启动或恢复(进入前台)
- nginx - Nuxt 路由无法在构建时创建子路由
- python - Paramiko 上传错误 [Errno 2]
- node.js - 使用 Cloud Functions for Firebase 修复类型“任何”的 Typescript 警告
- reactjs - Not able to access react state from socket event handler function
- python - 试图在 xgboost 目录上运行 mvn install,错误
- javascript - 未捕获的 ReferenceError:使用 VuePress 时未定义进程
- go - gRPC-server 流的语法