Escolar Documentos
Profissional Documentos
Cultura Documentos
Passos:
1) O primeiro valor será o máximo temporário
2) Compare o próximo item na lista com o máximo
temporário. Torná-lo o máximo temporário caso ele seja
maior que o máximo temporário;
3) Repetir os passos 1-2 enquanto houver itens na lista;
4) O máximo temporário é o maior valor da lista.
Pseudocódigo do exemplo
3 2 2 2
2 3 3 3
4 4 4 1
1 1 1 4
5 5 5 5
Segundo passo
2 2 2
3 3 1
1 1 3
4 4 4
5 5 5
Ordenação (Bubble Sort)
procedure bubblersort(a1,...,an)
for i=1 to n-1
for j=1 to n-i
if aj > aj+1 then interchange aj and aj+1
Ordenação (Insertion Sort)
Problema
Trocar um valor utilizando o menor número de moedas
possível.
Greedy algorithm
“trocar dinheiro”
Definição:
Sejam f e g funções do conjunto dos inteiros (ou conjunto
dos números reais) no conjunto dos números reais. Diz-se
que f(x) é O(g(x)) se existem constantes C e n0 de forma
que:
x2+2x+1 é O(x2)
Notação Big-O
|f(x)| ≤ C|g(x)|, se x>n0
Dado que
Assim, |a+b| ≤ |a|+|b|
Ω
Existe uma forte conexão entre as notações big-O e big-Ω
f(x) é Ω(g(x)) se e somente se g(x) for O(f(x))
Função de Complexidade (ƒ)
Exemplo
Encontrar o maior elemento em um vetor de inteiros
A[1..n], n ≥ 1
Problema:
Cada registro possui uma chave única.
Dada uma chave qualquer, o programa encontra o registro que
contém essa chave
Solução
O algoritmo mais simples faz uma pesquisa seqüencial
ƒ(n): número de registros consultados no arquivo
Casos a considerar
Melhor caso: ƒ(n) = 1
Pior caso: ƒ(n) = n
Caso Médio: ƒ(n) = (n+1)/2
Exemplo
Encontrar o maior e o menor elemento em um vetor de inteiros A[1...n]
Complexidade Terminologia
O(1) Complexidade Constante