Предположим, у меня есть два алгоритма:
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
//do something in constant time
}
}
Это естественно O(n^2)
. Предположим, что у меня также есть:
for (int i = 0; i < 100; i++) {
for (int j = 0; j < n; j++) {
//do something in constant time
}
}
Это O(n) + O(n) + O(n) + O(n) + ... O(n) + = O(n)
Кажется, что хотя мой второй алгоритм O(n)
, это займет больше времени. Может ли кто-то расширить это? Я поднимаю его, потому что часто вижу алгоритмы, где они, например, выполняют первый шаг сортировки или что-то в этом роде, а при определении общей сложности - это самый сложный элемент, который ограничивает алгоритм.