根据Wikipedia的说法,访问数组中的任何单个元素都需要花费固定的时间,因为只需执行一次操作即可定位它。
对我来说,幕后发生的事情可能看起来像这样:
a)搜索是线性完成的(例如,我要访问元素5。我从索引0开始搜索,如果它不等于5,则转到索引1,依此类推。)这是O(n)-其中n是数组的长度
b)如果数组存储为B树,则将得到O(log n)
我看不到其他方法。
有人可以解释为什么以及如何在O(1)中完成吗?
数组从特定的内存地址开始start。每个元素占用相同数量的字节element_size。数组元素从起始地址开始在内存中一个接一个地放置。所以,你可以计算出该元素的内存地址i用start + i * element_size。该计算与阵列大小无关,并且为此O(1)。
start
element_size
i
start + i * element_size
O(1)