2015-09-08 4 views
0

Временная сложность метода toString() должна быть O(Row*Col). То, что я вижу из кода, состоит в том, что есть два цикла for-loop, в которых один из них выполняется через строки, а другой - через col.Сложность времени метода

Занимает ли объявление переменных String много времени? Я написал код, но имеет ли он такую ​​точную временную сложность?

+0

:) :) :) :) @TAsk, есть ли способ сократить его? Может ли использование StringBuilder сократить его? –

+1

Прежде всего, избавитесь от всей избыточности, как коммутатор с одним случаем. – wvdz

+0

@John Это похоже на печать доски (в последнее время здесь много вопросов о совете). Вы не создаете строку всей доски в методе 'toString()'. Вместо этого создайте метод 'printBoard()'. 'toString()' для возврата строкового представления объекта, например. для отладки, поэтому было бы приемлемым возвращаемое значение «плата (10 x 15)». – Andreas

ответ

1

Да, сложность O (Row * Col) или O (N), где N - количество элементов.

Декларации не входят в асимптотическое время работы, поскольку они имеют постоянное время.

+0

Итак, 'toString()' имеет сложность O (R * C), правильно? @popovitsj –

+0

Btw, @popovitsj, is not O (R * C), эквивалентный O (N^2)? У меня есть вложенный цикл в коде, а не временная сложность O (N^2) или O (R * C)? –

+0

@John, это эквивалентно O (N^2), если R == C. Это часто забывается, но если вы говорите, что время работы O (N-something), вы всегда должны указать, что означает N. В этом случае я бы назвал этот алгоритм O (N), где N - число элементов, и, конечно, количество элементов можно вычислить с помощью 'R * C' – wvdz

Смежные вопросы