Если у вас есть опыт программирования. Скажем, у вас есть код ниже:
void SomeMethod(int x)
{
for(int i = 0; i< x; i++)
{
// Do Some Work
}
}
Обратите внимание, что цикл выполняется для x итераций. Обобщая, мы говорим, что вы получите решение после N итераций (где N будет значением x ex: количество элементов в массиве / входе и т. Д.).
Так что этот тип реализации / алгоритм, как говорят, имеет временную сложность порядка N, записанную как O (n)
Аналогично, вложенное значение для (2 цикла) равно O (n-квадрат) => O (n ^ 2)
Если вы приняли бинарные решения и сократили возможности пополам и выбрали только половину решения. Тогда сложность O (log n)
Найдена эта ссылка , чтобы быть интересной.
Для: Химаншу
В то время как Ссылка объясняет, как сложность log (base2) N проявляется очень хорошо, позвольте мне выразить то же самое в моих словах.
Предположим, у вас есть предварительно отсортированный список, например:
1,2,3,4,5,6,7,8,9,10
Теперь вас попросили найти, существует ли 10 в списке. Первое решение, которое приходит на ум - это просмотреть список и найти его. Что означает O (n). Можно ли сделать это лучше?
Подход 1:
Как известно, список уже отсортирован в порядке возрастания Итак:
- Список прерываний в центре (скажем, в 5).
- Сравните значение Center (5) со значением поиска (10).
- Если значение центра == Значение поиска => Найден элемент
- Если Center Выполните вышеуказанные шаги для правой половины списка
- Если Центр> Поиск значения => Выполнить вышеуказанные шаги для левой половины списка
В этом простом примере мы найдем 10 после 3 или 4 перерывов (в: 5, затем 8, затем 9) (в зависимости от того, как вы реализуете)
Это означает, что для N = 10 элементов - время поиска было 3 (или 4). Положите сюда немного математики;
2 ^ 3 + 2 = 10 для простоты скажем
2 ^ 3 = 10 (почти равно --- это просто для простой логарифмической базы 2)
Это можно переписать как:
Log-Base-2 10 = 3 (опять почти)
![enter image description here](https://i.stack.imgur.com/qCdix.png)
Мы знаем, что 10 - это количество элементов, а 3 - количество разрывов / поисков, которые мы должны были сделать, чтобы найти элемент. Становится
log N = K
Это сложность алгоритма выше. O (log N)