В частности: учитывая хэш (или индекс массива), как машина получает данные за постоянное время?
Мне кажется, что даже прохождение всех других ячеек памяти (или чего-то еще) потребует времени, равного количеству пройденных ячеек (т.е. линейное время). Коллега отважно пытался объяснить мне это, но вынужден был сдаться, когда мы дошли до схем.
Пример:
my_array = new array(:size => 20)
my_array[20] = "foo"
my_array[20] # "foo"
Доступ к «foo» в позиции 20 постоянен, потому что мы знаем, в каком ведре находится «foo». Как мы волшебным образом попали в это ведро, не обойдя всех остальных по пути? Чтобы добраться до дома №20 в квартале, вам все равно придется пройти мимо остальных 19 ...