freeCodeCamp/guide/portuguese/computer-science/notation/big-o-notation/index.md

5.2 KiB

title localeTitle
Big O Notation Notação Big O

Notação Big O

Como cientista da computação, se você estiver trabalhando em um software importante, provavelmente precisará ser capaz de estimar a velocidade com que algum algoritmo ou outro vai rodar.

A notação Big O é usada na ciência da computação para descrever o desempenho ou a complexidade de um algoritmo. Na verdade, a notação Big O é um símbolo especial que informa a velocidade do algoritmo. É claro que você usará algoritmos predefinidos com frequência - e, quando fizer isso, é vital entender o quão rápido ou lento eles são.

Qual notação de Big O parece?

Isso informa o número de operações que um algoritmo fará. Chama-se notação Big O porque você coloca um “Big O” na frente do número de operações.

Big O estabelece um pior tempo de execução

Digamos que você é um médico que está tratando Harry Abbit, você pode olhar para os registros eletrônicos que estão relacionados com a história médica de Harry Abbit (ele é a primeira pessoa em uma lista). Vamos considerar a situação em que sua vida depende de todos os dados médicos disponíveis. Suponha que você esteja usando uma pesquisa simples para procurar uma pessoa nos registros eletrônicos. Você sabe que a pesquisa simples leva O (n) tempo para ser executada, então você terá que procurar por cada entrada do Abbit. Claro, você notou que o Abbit é a primeira entrada, então você não tem que olhar para cada entrada - você a encontrou na primeira tentativa.

Esse algoritmo levou O (n) tempo? Ou levou O (1) tempo porque você encontrou a pessoa na primeira tentativa?

Nesse caso, esse é o melhor cenário. Mas a notação Big O é sobre o pior cenário possível. Isso é O (n) tempo (busca simples ainda leva). É uma garantia de que a busca simples nunca será mais lenta que a hora O (n).

Os tempos de execução do algoritmo crescem a taxas diferentes

Vamos supor que leva 1 milissegundo para verificar uma entrada. Com a pesquisa simples, o médico precisa verificar 10 entradas, então a pesquisa demora 10 ms para ser executada. Por outro lado, ele só precisa verificar 3 elementos com algoritmo de busca binária (log10 é aproximadamente 3), de modo que a pesquisa leve 3 ms para ser executada.

Mas, realisticamente, a lista terá mais de cem elementos.

Se isso acontecer, quanto tempo demora a pesquisa simples? Quanto tempo demora a pesquisa binária?

O tempo de execução para pesquisa simples com 1 bilhão de itens será de 1 bilhão de ms, o que equivale a 11 dias. O problema é que os tempos de execução para pesquisa binária e pesquisa simples não crescem na mesma taxa .

Assim, à medida que a lista de números aumenta, a pesquisa binária torna-se muito mais rápida que a pesquisa simples. Ou seja, à medida que o número de itens aumenta, a pesquisa binária leva um pouco mais de tempo para ser executada. Mas a pesquisa simples leva muito mais tempo para ser executada. Assim, à medida que a lista de números aumenta, a pesquisa binária torna-se muito mais rápida que a pesquisa simples.

É por isso que não é suficiente saber quanto tempo um algoritmo leva para ser executado - você precisa saber como o tempo de execução aumenta à medida que o tamanho da lista aumenta. É aí que entra a notação Big O.

A notação Big O permite comparar o número de operações

Por exemplo, suponha que você tenha uma lista de tamanho n. A pesquisa simples precisa verificar cada elemento, portanto, serão necessárias n operações. O tempo de execução na notação Big O é O (n).

Onde estão os segundos?

Não há nenhum - Big O não diz a você a velocidade em segundos. A notação Big O permite comparar o número de operações. Diz-lhe quão rápido o algoritmo cresce.

</ p

Tempos de execução mais comuns para algoritmos

Uma lista dos tempos de execução mais comuns para algoritmos em termos de notação Big O. Aqui estão cinco tempos de execução do Big O que você encontrará muito, classificados do mais rápido para o mais lento:

  1. O (log n), também conhecido como tempo de log . Exemplo: pesquisa binária.
  2. O (n), também conhecido como tempo linear . Exemplo: pesquisa simples.
  3. O (n * log n) Exemplo: um algoritmo de classificação rápida, como quicksort (no capítulo 4).
  4. O (n2) Exemplo: um algoritmo de classificação lenta, como a classificação de seleção (surgindo no capítulo 2).
  5. Em!) Exemplo: um algoritmo muito lento, como o vendedor ambulante (chegando próximo!).

Este artigo cobre apenas os conceitos básicos do Big O. Para uma explicação mais detalhada, dê uma olhada em seus respectivos guias FreeCodeCamp para algoritmos.

Mais Informações