Sim, para N. adequadamente pequeno. Sempre haverá um N, acima do qual você sempre terá a ordem O (1) <O (lg N) <O (N) <O (N log N) <O (N ^ c ) <O (c ^ N) (onde O (1) <O (lg N) significa que em um algoritmo O (1) haverá menos operações quando N for adequadamente grande ec é uma constante fixa maior que 1 )
Digamos que um algoritmo O (1) específico execute exatamente f (N) = 10 ^ 100 (um googol) e um algoritmo O (N) execute exatamente g (N) = 2 N + 5 operações. O algoritmo O (N) oferecerá maior desempenho até que você N seja aproximadamente um googol (na verdade, quando N> (10 ^ 100 - 5) / 2), portanto, se você esperasse que N estivesse na faixa de 1000 a um bilhão, sofreria uma penalidade maior usando o algoritmo O (1).
Ou, para uma comparação realista, digamos que você esteja multiplicando números de n dígitos. O algoritmo Karatsuba é no máximo 3 n ^ (lg 3) operações (que é aproximadamente O (n ^ 1.585)) enquanto o algoritmo Schönhage – Strassen é O (N log N log log N), que é uma ordem mais rápida , mas para citar wikipedia:
Na prática, o algoritmo de Schönhage-Strassen começa a superar métodos mais antigos, como a multiplicação de Karatsuba e Toom-Cook, para números além de 2 ^ 2 ^ 15 a 2 ^ 2 ^ 17 (10.000 a 40.000 dígitos decimais). [4] [5] [6 ]
Portanto, se você estiver multiplicando números de 500 dígitos, não faz sentido usar o algoritmo "mais rápido" pelos grandes argumentos O.
EDIT: Você pode encontrar determinar f (N) comparado g (N), tomando o limite N-> infinito de f (N) / g (N). Se o limite for 0, então f (N) <g (N), se o limite for infinito, então f (N)> g (N), e se o limite for alguma outra constante, então f (N) ~ g (N) em termos de grande notação O.