Метод выполняется linear для общего количества элементов . Если мы обозначим это как n
, это будет O(n)
.
Звучит лучше, чем есть, представьте, что у вас есть вложенный массив int[][][]
, например:
{ // int[][][]
{ 1, 2, 3 }, // int[]
{ 4, 5 }, // int[]
{ // int[][]
{ 6, 7, 8 }, // int[]
{ 9 } // int[]
}
}
Тогда мыиметь 9
int
значений в общей сложности. Под n
я подразумевал те 9
элементы, а не 4
для массивов внешней структуры. На этом он работает линейно n
.
Опять же, я не говорю о outer.length
(то есть 4
), я говорю о фактическом количестве элементов, если вы полностью следите за всей структурой, если вы сгладите это. На самом деле невозможно выразить сложность в терминах outer.length
, поскольку она совершенно не связана. Небольшой пример, демонстрирующий это:
{
{
{ 1, 2, 3, 4, ..., 1_000_000 }
}
}
Здесь input.length
- это просто 1
, но фактическое количество элементов довольно велико. Вы видите, это не связано.
Причина, по которой он снова вызывает себя, состоит в том, что, представьте, что у вас есть Object[][][][]
(4 измерения), тогда вы также должны проверить all из этих размеров. Так что он действительно проверяет все элементы.