Я читаю Cracking the Coding Interview, и в главе Big O есть объяснение амортизированного времени. Здесь используется классический пример чего-то вроде ArrayList, нуждающегося в росте. Когда массиву необходимо увеличиться, вставка займет O(N)
времени при условии, что в новый массив необходимо скопировать N элементов. Это хорошо.
Чего я не понимаю, так это того, что, поскольку емкость массива удваивается, почему амортизированное время для каждой вставки должно быть O(1)
Из всего, что я понимаю, каждый раз, когда вы вставляете в массив, это всегда операция O(N)
. Чем оно отличается от амортизированного времени? Я уверен, что текст правильный, я просто не понимаю концепцию O(1)
амортизированного времени.