让我简要解释一下我认为数组元素引用是如何工作的。
数组起始地址+数据类型大小*要取出的元素索引=所需数组元素的地址
基本上,当写入 b[i] 时执行上述操作(其中 b 是一个数组,i 是所需元素的索引)。此操作应该是“恒定时间操作”。然而,我认为不然。考虑以下示例,
示例1579015713945(起始地址)+ 16(数据类型大小)* 2789280(所需元素的索引)=所需元素的地址。
示例2579015713945(起始地址)+ 16(数据类型大小)* 1(所需元素的索引)=所需元素的地址。
示例3100(起始地址)+ 8(数据类型大小)* 1(所需元素的索引)= 所需元素的地址。
机器是否无法比示例 1 更快地计算示例 2 和 3?那么,当需要的时间量不同时,该操作如何成为
恒定时间操作? 我在colab上计算了示例1和示例3的值,计算时间都是0秒(哈哈)。具体数字在这里并不重要。我可以将数字设置得更大,以使示例 1 和示例 3 之间的执行时间差异更大。那么示例 1 可能需要 1 秒,示例 3 可能需要 0.1 秒。无论如何,我想我已经能够表达我的一般性问题了。