Действительно, сложность времени программы может зависеть от времени, которое требуется для чтения ввода. Например, если программа читает массив из входных данных, а затем выполняет один двоичный поиск в этом массиве, временная сложность составляет Θ (n) просто из-за чтения входных данных.
Также может преобладать временная сложность программы. к тому времени, которое требуется для генерации выхода. Например, дерево с n вершинами имеет n-1 ребер, поэтому многие алгоритмы на деревьях могут выполняться за Θ (n) времени; но если мы хотим напечатать матрицу смежности , то это невозможно сделать за время, превышающее Θ (n 2 ), поскольку на выходе получается двумерный массив с n 2 элементов.
Я думаю, что есть неявный дополнительный вопрос: Так как же алгоритм может работать менее чем за Θ (n) времени? Обратите внимание, что выше говорилось о программы, которые IO . Алгоритм двоичного поиска занимает Θ (log n) времени, поскольку чтение входных данных не выполняется самим алгоритмом двоичного поиска. Алгоритм является только частью программы; массив читается из ввода другой частью программы, поэтому он существует в памяти до запуска алгоритма, и алгоритм получает доступ к нему через ссылку . Это означает, что алгоритм получает входные данные размером n за время Θ (1).