Здесь необходимо точное постановка задачи:
Необходимо рассмотреть две метрики: сколько места требуется и сколько времени требуется. В этой заметке рассматриваются требования к времени.
Операция конкатенации указывается для объединения только двух строк за раз, при этом конкатенация выполняется с левой ассоциацией:
((k1 + k2)+ k3) ...
Есть два параметра, которые можно рассмотреть, и два способа просмотра второго параметра.
Первый параметр - это общий размер (в символах)строки, которые должны быть объединены.
Второй параметр: либо количество строк, которые должны быть объединены, либо размер каждой из строк, которые должны быть объединены.
С учетом первого случая:
n - Общий размер (в символах) строк, подлежащих объединению.
k - Общее количество строк, подлежащих объединению.
Время конкатенации примерно равно:
(н / к) * (k ^ 2) / 2
Или с точностью до постоянной фабрики:
n* k
Затем, для фиксированного 'k', конкавремя растяжения линейно!
Принимая во внимание второй случай:
n - Общий размер строк
m - Размер каждой подстроки
Это соответствует предыдущему случаю, но с:
k = n / m
Предварительная оценка тогда становится:
n * k = n * (n / m) = n ^ 2 / m
То есть для фиксированного 'm' время конкатенации квадратично.