Вроде бы, если к массиву дополнительно выделять память, округлённую до степени двойки (как и делают, если массив должен часто "расти"), то конкатенация будет

средневзвешенно.
Конкатенация в массиве как минимум

- надо же скопировать добавляемые элементы.
А то, что вы имеете в виду - это добавление одного элемента в массив, тут как раз и получается амортизационное

.
-- Пт июн 26, 2015 10:12:33 --А что, такие бывают? Вроде б, либо индексирование

конкатенация

, либо индексирование логарифмическое, конкатенация фиксированная.
Можно довольно легко сделать обе операции

- бинарное дерево с хранением количества элементов.