Почему сложность времени StringBuilder.append равна O (1)JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему сложность времени StringBuilder.append равна O (1)

Сообщение Anonymous »

Благодаря амортизированному анализу мы знаем, что вставки N с помощью метода StringBuilder#append занимают время O(N). Но вот здесь я теряюсь. Рассмотрим это, когда inputString — это строка, введенная пользователем.

Код: Выделить всё

for (int i = 0; i < N; i++) {
s.append(inputString);
// where s is an empty StringBuilder object at the beginning
// and inputString is the string that is taken from the user
}
Должна ли это иметь временную сложность O(inputString.length * N), поскольку метод Append() копирует входную строку в конец StringBuilder N раз? Почему мы считаем, что метод Append() требует временной сложности O(1), тогда как его следует рассматривать как O(inputString.length)?

Почти везде, где я проверяю, он также считается O(1), например https://quora.com/What-is-the-complexit ... fer-append как Какова сложность этого простого фрагмента кода?

Подробнее здесь: https://stackoverflow.com/questions/567 ... xity-is-o1
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»