Начиная с уравнения, мы думаем об этом немного задом наперед. Что вас действительно волнует, так это масштабируемость или то, что она собирается делать, когда вы увеличиваете размер ввода.
Если у вас, например, просто цикл, у вас есть O (n) алгоритм временной сложности. Если у вас есть цикл внутри другого цикла, он становится O (n ^ 2), потому что теперь он должен сделать n ^ 2 много вещей для любого размера n ввода.
Когда вы говорите о худшем случае, вы обычно говорите о недетерминированных алгоритмах, где у вас может быть цикл, который может преждевременно остановиться. Для этого вам нужно предположить худшее и сделать вид, что цикл остановится как можно позже. Так что если у нас есть:
для (int i = 0; i .5) j = n;
}
}
Мы бы сказали, что наихудший случай - это O (n ^ 2). Несмотря на то, что мы знаем, что весьма вероятно, что средний цикл выйдет из строя рано, мы ищем наихудшую возможную производительность.