Как правило, вы перегоняете нотацию Big-O (и связанные нотации Бахмана-Ландау, такие как Big-Theta и Big-Omega) вплоть до операции быстро растущего N-члена.Таким образом, вы удаляете / упрощаете меньшие члены (N 2 + N == O (N 2 )) и неизменяемые коэффициенты члена ( O (4N 2 ) == O (N 2 )), но НЕ являются степенями или основаниями экспонент ( O (3 4N ) == O (3 N )).Вы также не снимаете переменные коэффициенты;NlogN - это NlogN, НЕ logN или N.
Таким образом, вы обычно будете видеть числа в нотации Big-Oh только в том случае, если сложность является полиномиальной (степень N) или экспоненциальной (N-я степень основания).Наиболее распространенные нотации Big-Oh очень похожи на те, которые вы показываете, с добавлением NlogN (ОЧЕНЬ распространено).
Однако, если вы различаете два алгоритма одинаковой общей сложности, вы МОЖЕТЕ добавить меньшие термины и /или коэффициенты обратно, чтобы продемонстрировать относительную разницу;алгоритм, который выполняет линейно, но имеет двойные инструкции другого, может быть описан как O (2N) при сравнении его с другим O (N) алгоритмом.Однако, взятые по отдельности, оба алгоритма являются линейными ( O (N)).
Некоторые обозначения Big-O не являются алгебраическими и могут включать несколько переменных в простейшей форме общего случая.Например, сортировкой счета является сложность O (Макс (N, M)), где N - количество элементов в списке, а M - диапазон этих элементов.Часто это можно уменьшить в определенных случаях, определив M в терминах N и, таким образом, сократив до одной переменной (если рассматриваемый список состоит из первых N квадратов, M = N 2 -1), но в общем случае обе переменные независимы и значимы.Официально сложность BucketSort составляет O (N), но на самом деле это больше похоже на O (NlogM), где M - максимальное значение из списка из N элементов.M обычно считается незначительным, но это зависит от значений, которые вы обычно сортируете (для сортировки 5 значений каждое на миллиарды потребуется больше циклов для сравнения каждой степени 10, чем обходы по списку, чтобы поместить их в сегменты) и от используемого радиуса(RadixSort - это BucketSort с базовым значением 2; опять же, для сортировки значений с большим значением log 2 потребуется больше циклов, чем обходов).