Если обозначить переменной n размер данных, с которыми работает код, можно воспользоваться рядом общих правил.
• Если код не обращается ни к каким данным, это O(1).
• Если код последовательно перебирает данные, это O(1).
• Если код содержит два вложенных цикла, каждый из которых перебирает данные, это O(n2).
• Вызовы функций включаются в подсчеты не как один шаг, а как общее количество шагов кода внутри функции. См. подраздел «Порядок “О-большое” для часто используемых функций», с. 283.
• Если код содержит операцию «разделяй и властвуй», которая многократно делит данные надвое, это O(log n).
• Если код содержит операцию «разделяй и властвуй», которая выполняется по одному разу для каждого элемента данных, это O(n log n).
• Если код перебирает все возможные комбинации значений в данных с размером n, это O(2n) или другой экспоненциальный порядок.
• Если код перебирает все возможные перестановки (то есть варианты упорядочения) значений данных, это O(n!).
• Если код включает сортировку данных, это как минимум O(n log n).
Python. Чистый код для продолжающих
·
Свейгарт Эл