Escolar Documentos
Profissional Documentos
Cultura Documentos
Desenvolvimento de Programas
Desenvolver algoritmos para várias operações Selecionar e usar uma estrutura de dados
em estruturas de dados
SOLUÇÃO B ALGORITMO B
PROBLEMA MAIS EFICIENTE
SOLUÇÃO C ALGORITMO C
SOLUÇÃO D ALGORITMO D
• Eficiência
• Tempo de execução
• Memória
• Notação Grande O
• Definição
• é se existe uma constante e um , onde
• para todo
• Significa que a função não irá crescer mais rápido que a função para valores de
• Exemplos
• Similarmente
é
3é
é
45 é
• Exemplos
• Similarmente
7
• Na prática não vamos encontrar a ordem de uma função dessa forma
• Limite superior /
Taxa de Taxa de
crescimento baixa crescimento alta
Valor de 𝒏
1 0 1 0 1 1 2
2 1 2 2 4 8 4
4 2 4 8 16 64 16
8 3 8 24 64 512 256
16 4 16 64 256 4096 65536
32 5 32 160 1024 32768 4.29E+09
64 6 64 384 4096 262144 1.84E+19
• é / é possui taxa de crescimento superior a
Taxa de Taxa de
crescimento crescimento
baixa alta
• para todo
• Operações aritméticas
• Atribuições
• Entrada/Saída (I/O)
C2
𝑇 ( 𝑛 ) =𝐶 1+𝐶2+𝐶
• O processamento exato da3 função
∗𝑛+𝐶não4 é
atribuicao necessário
• Interessada em quantas vezes a operação é executada
para (i recebe 0; i menor n; incrementa i) Encontra
• Escritao da
Grande
função O para essa função
comparacao C3 • Remover constantescom aquelas operações primitivas
• Preocupa-se
• Ignorarcujo
os coeficientes
o número depende do tamanho de entrada
operacao_aritmetica C4 • Operações em laços cujo o número de
} 𝑂 (𝑛) de n
iterações depende
Interessada em saber o que acontece quando o tamanho de
entradas se tornaalgoritmos
Permite analisar muito grande
de maneira independente do
computador
saída
para (i recebe 0;
i menor n;
incrementa i)
comparação
para (i recebe 0;
i menor 6;
incrementa i)
atribuicao
}
saída
}
saída
}
saída
12
} 6
3
1
0
𝑇 ( 𝑛 ) =[log 2 𝑛] 𝑇 ( 𝑛 ) =𝑂 ¿
Algoritmos e Estruturas de Dados 30
Aula 05 – Introdução / Análise de complexidade
• Calcular a Complexidade de Tempo
saída
4
} 8
10
32
64
𝑇 ( 𝑛 ) =[log 2 𝑛] 𝑇 ( 𝑛 ) =𝑂 ¿
Algoritmos e Estruturas de Dados 31
Aula 05 – Introdução / Análise de complexidade
• Calcular a Complexidade de Tempo
para (j recebe 0;
j menor que n;
incrementa j)
𝑇 ( 𝑛 ) =𝑛+𝑛2 𝑇 ( 𝑛 ) =𝑂 ¿
comparacao
operacao_aritmetica
saída
}
para (k recebe 0;
k menor que n;
incrementa k)
comparacao
operacao_aritmetica
saída
}
operacao_aritmetica
para (j recebe 0; 0 1
j menor ou igual a i;
incrementa j) 1 2
operacao_aritmetica
2 3
saída
}
𝑛 ( 𝑛+1 )
𝑁 ú 𝑚𝑒𝑟𝑜 𝑡𝑜𝑡𝑎𝑙 𝑑𝑒 𝑖𝑡𝑒𝑟𝑎 çõ 𝑒𝑠 𝑛𝑜 𝑙𝑎ç 𝑜𝑖𝑛𝑡𝑒𝑟𝑛𝑜=1+2+3+…+𝑛=
2
𝑛2 𝑛
𝑇 ( 𝑛) = +
2 2 𝑇 ( 𝑛 ) =𝑂 ¿
saida
}
𝑛 ( 𝑛 −1 ) 2
𝑁 ú 𝑚𝑒𝑟𝑜 𝑡𝑜𝑡𝑎𝑙 𝑑𝑒 𝑖𝑡𝑒𝑟𝑎 çõ 𝑒𝑠 𝑛𝑜 𝑙𝑎ç 𝑜𝑖𝑛𝑡𝑒𝑟𝑛𝑜= ( 𝑛− 1 ) + ( 𝑛− 2 ) +…+2+1=
2 1
2
𝑛 𝑛
𝑇 ( 𝑛) = −
2 2 𝑇 ( 𝑛 ) =𝑂 ¿ Algoritmo de ordenação por seleção
para (j recebe 0;
j menor ou igual a i;
incrementa j)
operacao_aritmetica
saida
}
𝑛 ( 𝑛 −1 ) 1 2
𝑁 ú 𝑚𝑒𝑟𝑜 𝑡𝑜𝑡𝑎𝑙 𝑑𝑒 𝑖𝑡𝑒𝑟𝑎 çõ 𝑒𝑠 𝑛𝑜 𝑙𝑎ç 𝑜𝑖𝑛𝑡𝑒𝑟𝑛𝑜= ( 𝑛− 1 ) + ( 𝑛− 2 ) +…+2+1=
2 0 1
2
𝑛 𝑛
𝑇 ( 𝑛) = −
2 2 𝑇 ( 𝑛 ) =𝑂 ¿ Algoritmo de ordenação bolha
função(i) 𝐎¿
saida
}
retornarTamanhoPilha()
• Caso médio
Algoritmo A é
O() Exponencial • O tempo de execução para este algoritmo cresce muito rapidamente
• Exemplo: algoritmo com onde irá dobrar para cada elemento adicional nos dados de entrada
• Problema das torres de Hanoi
• remover()/remove() – remove a primeira ocorrência de qualquer elemento de uma lista não vazia