Лучший пример N * log (N) , на мой взгляд, будет выглядеть на основе сравнения поиска:
Давайте возьмем сортировку слиянием в качестве примера.
Алгоритм принимает массив элементов, рекурсивно разбивает его на 2, пока не получит массив длины 2, затем объединяет части в O (n), каждое объединение отсортированных массивов проще.
Хорошо, это было краткое описание, теперь давайте посмотрим, как это выглядит:
[ 1 2 3 4 5 6 7 8 ]
|
/\
[1 2 3 4] [ 5 6 7 8 ]
| |
/\ /\
[1 2 ] [ 3 4] [5 6] [7 8]
То, что я надеюсь, вы можете увидеть здесь, что глубина рекурсии есть log (n) (Потому что это дерево с двумя ветвями ... так что это log (n) с основанием 2)
Но на каждом уровне дерева есть O (n) операций (потому что мы активнопереупорядочение n объекта).
Итак, здесь сложность N * log (N) .
Большинство алгоритмов, имеющих сложность Log (N), получают это издревовидный алгоритм.
Некоторые из них являются просто вероятностным log (n) (что означает, что после долгих математических вычислений вы получитев среднем это будет что-то вроде log (n))