Допустим, у вас есть n
файлы.Итак, вы посещаете каждый файл один раз.Так что эта часть O(n)
.Допустим, m
- максимально возможное количество строк, которое происходит в этом процессе.Вы читаете каждую строку в каждом файле один раз.Таким образом, в худшем случае вы будете читать m
строк в n
файлах.Итак, это делает его O(n*m)
.Вы можете посмотреть на m
даже как на среднее число строк.
Причина, по которой вам нужны n и m, заключается в том, что у вас есть две неизвестные переменные, число файлов (не имеет значения,в одной папке, отформатированной как один файл и один подкаталог в каждом каталоге, так как вы идете по одной, вам нужно посетить все это, и вы посещаете его только один раз в каждой, и количество строк. Каждая из них может расти независимо,так что это функция двух неизвестных. Следовательно, это O(n*m)
.
Даже если вы поместите все строки в один файл, это будет O(f(r))
, где f(r)=g(n*m)
, так что все равно будет O(n*m)
, где r - общее количество строк (r = n * m
). Причина, по которой он имеет другую функцию, но все еще в том же порядке, из-за коэффициента перемещения по папкам и начала чтения файла, который должен быть некоторой константой, определенной до началаалгоритм, который не влияет на порядок функции.