小编典典

为什么访问数组中的任何单个元素都必须在恒定时间内完成(O(1))?

algorithm

根据Wikipedia的说法,访问数组中的任何单个元素都需要花费固定的时间,因为只需执行一次操作即可定位它。

对我来说,幕后发生的事情可能看起来像这样:

a)搜索是线性完成的(例如,我要访问元素5。我从索引0开始搜索,如果它不等于5,则转到索引1,依此类推。)这是O(n)-其中n是数组的长度

b)如果数组存储为B树,则将得到O(log n)

我看不到其他方法。

有人可以解释为什么以及如何在O(1)中完成吗?


阅读 266

收藏
2020-07-28

共1个答案

小编典典

数组从特定的内存地址开始start。每个元素占用相同数量的字节element_size。数组元素从起始地址开始在内存中一个接一个地放置。所以,你可以计算出该元素的内存地址istart + i * element_size。该计算与阵列大小无关,并且为此O(1)

2020-07-28