Ваши внешние циклы обрабатывают каждый фрагмент входных данных, поэтому рост является линейным, например, O (n). Ваши внутренние циклы обрабатывают только меньшее подмножество полных входных данных, и рост является логарифмическим, например O (log n). Следовательно, рост является линейным, например, O (nlogn). Если внутренний цикл обрабатывает каждый фрагмент входных данных, рост будет квадратичным, например O (n ^ 2)
Хорошее объяснение можно найти здесь:
Что означает O(журнал n) означает точно?
РЕДАКТИРОВАТЬ: Моя ошибка. Я согласен с комментариями под оригинальным постом, что рост программы, кажется, O (n ^ 2). Я был немного быстр в поворотах. При быстром взгляде мне сначала показалось, что внутренние циклы были выполнены log n раз. Но, похоже, это не относится к внутренним циклам во вторых n итерациях. Однако, насколько я понимаю, первая внутренняя петля кажется мне выполненной log n раз (так что порядок сортировки строк - O (nlogn)), но, возможно, я ошибаюсь.