【发布时间】:2014-05-30 23:40:27
【问题描述】:
根据Wikipedia,访问数组中的任何单个元素都需要恒定的时间,因为只需执行一次操作即可找到它。
在我看来,幕后发生的事情大概是这样的:
a) 搜索是线性完成的(例如,我想访问元素 5。我从索引 0 开始搜索,如果它不等于 5,我转到索引 1 等) 这是 O(n) - 其中 n 是数组的长度
b) 如果数组存储为 B-tree,这将给出 O(log n)
我没有看到其他方法。
有人能解释一下为什么以及如何在 O(1) 中完成吗?
【问题讨论】:
-
可以根据索引计算元素的偏移量。该计算具有恒定的时间,例如
size_of_an_element * (index - 1) -
元素 5 位于索引 5。这就是“索引”应用于数组时的含义。您不必扫描索引 0 到 4。
标签: arrays algorithm time-complexity