Академический Документы
Профессиональный Документы
Культура Документы
Aula 2
Analisando o exemplo 2
§ Três estruturas de repetição (linhas 2, 4 e 7);
§ Cada estrutura é iniciada e finalizada no
primeiro elemento;
§ Repetição cúbica;
§ Eficiência do algoritmo é O(n3).
Notação Big-O
Exemplo 3
§ Função: f(n) = 4n2 + 2n + 3
§ Primeiramente, assumir que os coeficientes
são iguais a 1, logo: f(n) = n2 + n +1
§ Em seguida, remover os fatores de menor
importância: f(n) = n2
§ Finalmente, a notação
será: O(f)n)) = O(n2)
Finalizando...
Comparação
assintótica de funções
Notação Big-!
Considere o código
int Busca(vet[]; int tam)
{
for (int i=0; i < tamanho; i++)
{
if(vetor[i] == valor_procurado)
{
return vetor[i]; //elemento encontrado
}
return -1;
}
}
Notação Big-!
Considerações sobre o código
§ A cada iteração, são executadas as instruções:
• O valor do índice i é comparado com o
tamanho do vetor;
• O valor armazenado na posição i é
comparado com o valor procurado;
• Se o valor comparado for igual
ao armazenado, é retornado
esse elemento;
• Senão, o valor do índice
é incrementado em
uma unidade.
Notação Big-!
Considerações sobre o código
§ Cada instrução consome um período de tempo
constante sempre que é executada;
§ Se o laço se repete n vezes, então o tempo
gasto por todas as n iterações é igual a: c1.n,
onde c1 corresponde à soma dos tempos das
computações de uma iteração;
Notação Big-!
Considerações sobre o código
§ Código possui uma variável para a criação do
laço (overhead) que é uma constante c2;
§ Assim, o tempo total para a busca de um
elemento nesse vetor no pior caso é:
c1.n+ c2
Notação Big-!