a notação big O é uma notação que determina a rapidez de um algoritmo.

para fazer uma comparação entre os tempos de execução de dois algoritmos, não é interessante comparar o tempo que cada algoritmo leva para ser executado, pois eles podem crescer com taxas diferentes.

a diferença de tempo entre a execução da pesquisa simples e pesquisa binária para um grupo de poucos elementos pode ser pequena, mas conforme a quantidade de elementos aumenta, a diferença entre elas se mostra muito maior: com 100 elementos, a pesquisa binária é apenas 15 vezes mais rápida do que a simples. porém, com 1 bilhão de elementos, a pesquisa binária é 33 milhões de vezes mais rápida.

pesquisa simplespesquisa binária
100 elementos100 ms7 ms
10.000 elementos10 segundos14 ms
1.000.000.000 elementos11 dias32 ms

não basta saber apenas quanto tempo um algoritmo leva para ser executado, mas também se o tempo de execução aumenta conforme a lista aumenta. para isso é utilizada a notação big O, que determina quão rápido é um algoritmo.

a notação big O informa a rapidez com que um algoritmo cresce, permitindo a comparação entre o número de operações que são necessárias para a execução - não existe uma indicação de unidade de tempo. basicamente, a notação big O é escrita assim:

big O → ← número de operações

considerando uma lista com itens, a pesquisa simples tem tempo de execução de , pois precisa de execuções. no caso da pesquisa binária, ela precisa de operações para percorrer uma lista de tamanho . na notação big O, seu tempo de execução é .

é importante entender que a notação big O não conta quantas operações foram necessárias para uma execução específica, mas o tempo de execução para a pior hipótese. é um dado generalista - ou uma garantia: determina o tempo de execução mais demorado possível para aquele algoritmo.

tempos de execução comuns

big Oexemplo
(tempo logarítimico)pesquisa binária
(tempo linear)pesquisa simples
ordenação quicksort (algoritmo rápido de ordenação)
ordenação por seleção (algoritmo lento de ordenação)
caixeiro viajante (algoritmo super lento)