Escolar Documentos
Profissional Documentos
Cultura Documentos
Fim- Algoritmo
Algoritmos Iterativos: Análise
Métodos de Pesquisa Sequencial – Análise das Operações Primitivas
– Para saber se uma chave está no conjunto compare com o elemento do meio;
– Se Achou retorna a posição encontrada;
– Se a chave é menor então procure na primeira metade;
– Se a chave é maior procura na segunda metade;
– Caso não tenha encontrado o elemento retorna -1;
A) 5, 100 e 30.
B) 6, 10 e 9.
C) 8, 31 e 18.
D) 10, 100 e 30.
E) 25, 500 e 150.
Algoritmos Iterativos: Análise
Exercício (3/3)
Por exemplo:
32 7 28 43 92 72 5
0 1 2 3 4 5 6
Algoritmos Iterativos: Análise
Métodos de Ordenação – Análise das Operações Primitivas - Bolha (3/9)
Passo 1 Passo 2
32 7 28 43 92 72 5 7 28 32 43 72 5 92
0 1 2 3 4 5 6 0 1 2 3 4 5 6
7 32
7 28 32 43
0 1
0 1 2 3
28 32
1 2 5 72
32 43 92 4 5
2 3 4
72 92
4 5
5 92
5 6
Algoritmos Iterativos: Análise
Métodos de Ordenação – Análise das Operações Primitivas - Bolha (4/9)
Passo 3 Passo 4
7 28 32 43 5 72 92 7 28 32 5 43 72 92
0 1 2 3 4 5 6 0 1 2 3 4 5 6
7 28 32
7 28
0 1 2
0 1
5 43
5 32
3 4
2 3
Algoritmos Iterativos: Análise
Métodos de Ordenação – Análise das Operações Primitivas - Bolha (5/9)
Passo 5 Passo 6
7 28 5 32 43 72 92 7 5 28 32 43 72 92
0 1 2 3 4 5 6 0 1 2 3 4 5 6
7
5 7
0
0 1
5 28
Resultado Final
1 2
5 7 28 32 43 72 92
0 1 2 3 4 5 6
n −1 n−2
para(i0; i<n–1; i++) faça 1 + i =0
2 + i =0
1
n−2 n −i −1
i=01 +
n−2 n−2 n −i − 2
para(j0; j<n–i-1; j++) faça i =0 j =0
3 +
i =0 j =0
1
Se (conjunto[j]>conjunto[j+1]) então
//permuta conjunto[j] com conjunto[j+1]
aux conjunto [j];
n−2 n −i − 2
i =0 j =0
13
conjunto [j] conjunto [j+1];
conjunto [j+1] aux;
fim.
17 3
Total de Operações Primitivas: T(n) = n2 − n − 4
(vetor em ordem decrescente - pior caso)2 2
Observação: Desenvolvimento na próxima transparência.
Algoritmos Iterativos: Análise
Métodos de Ordenação – Análise das Operações Primitivas - Bolha (8/9)
n−2 n −i − 2
t(n) = 1 + i =0 2 + i=01 + i=01 + 3 + i =0 j =0 1+
n −1 n−2 n−2 n−2 n −i −1 n−2 n −i − 2
i =0 j =0 i =0 j =0
13
n−2 n −i − 2
n−2 n −i −1
t(n) = 1 + 2n + 2(n-1) + i =0 j =0
3 + i =0 j =0
14
n−2 n −i − 2
n−2
i =0
n −i −1
j =0
3 + i =0 j =0
14 = 3n−2(n − i) + 14n−2(n − i − 1) =
i =0 i =0
3 n - 3 i + 14
n−2
n−2 n−2 n−2 n−2
i =0 i =0
n - 14 i =0
i - 14 i =0
1 =
i =0
17 2 17 17 2 3
t(n) = 1 + 2n +2 -2 + 2n - n- 3= n − n−4
2 2 2
Algoritmos Iterativos: Análise
Métodos de Ordenação – Análise das Operações Primitivas - Bolha (9/9)
Por exemplo:
32 7 28 43 92 72 5
0 1 2 3 4 5 6
Algoritmos Iterativos: Análise
Métodos de Ordenação – Análise das Operações Primitivas - Seleção (3/9)
32 7 28 43 92 72 5 Tamanho do segmento = 7
Posição de
troca 0 1 2 3 4 5 6
• Observação:
– Veja que o bloco interno que envolve a repetição da variável i tem os índices
superior e inferior da somatória alterados. Isto acontece pois j depende de i no
bloco mais interno e se não for realizada esta modificação a contagem e o
valor do contador i e j não se correspondem e isto é essencial para o
resultado da contagem. No método da bolha isto não era um problema pois a
repetição mais interna não dependia de i, o que ocorre no método da seleção.
– Exemplo: Suponha n = 3 e a operação de comparação j <= i:
n−2 i +1
• a) 1 se i = 0 → j = 1
i =0 j =1
• se i = 1 → j varia de 1 até 2
• Total = 3 operações primitivas;
n −1 i +1
• b) 1 se i = 1 → j varia de 1 até 2
i =1 j =1
• se i = 2 → j varia de 1 até 3 Observa-se que i varia
de 1 até 2, assim, a operação
• Total = 5 operações primitivas; j <= i será executada 2
• No código: para (i 2; i > 0; i--) vezes quando i = 1 e 3 vezes
quando i = 2 totalizando 5
• para (j 1; j <= i; j++) operações primitivas conforme
O item b.
Algoritmos Iterativos: Análise
Métodos de Ordenação – Análise das Operações Primitivas - Seleção (8/9)
n −1
t(n) = 2 + i =01 + 10i =11 + i =1 j =11 + 6
n −1 n −1 n −1 i +1 i
i =1 j =1
1
+ 10(n-1) + i =1 (i + 1) + 6i =1 i
n −1 n −1
t(n) = 2 + n
n −1
i=11 + 6i=1 i
n −1 n −1
t(n) = 2 + n + 10(n-1) + i =1
i +
Por exemplo:
32 7 28 43 92 72 5
0 1 2 3 4 5 6
Algoritmos Iterativos: Análise
Métodos de Ordenação – Inserção Direta – Funcionamento (3/5)
Passo 1
7 32 28 43 92 12 5 A[i] > Chave = 28
0 1 2 3 4 5 6
Segmento ordenado Segmento desordenado
Passo 4
7 28 32 43 92 12 5 Chave = 12
0 1 2 3 4 5 6
Segmento ordenado Segmento desordenado
Passo 5
7 12 28 32 43 92 5 Chave = 5
0 1 2 3 4 5 6
Segmento ordenado Segmento desordenado
Algoritmos Iterativos: Análise
Métodos de Ordenação – Inserção Direta – Funcionamento (5/5)
Passo 6
5 7 12 28 32 43 92
0 1 2 3 4 5 6
Segmento ordenado Segmento desordenado
Discussão:
Este é um método simples, normalmente utilizado para um conjunto
pequeno de dados. Isso ocorre porque este método apresenta uma
baixa eficiência em relação ao tempo total para realizar uma
ordenação. Vamos calcular este tempo?
Algoritmos Iterativos: Análise
Métodos de Ordenação – Inserção Direta – Análise do Tempo (1/6)
• Vamos avaliar este método considerando o tempo de cada instrução
(custo) e realizar uma análise no melhor e pior caso. Quando ocorre o
melhor e o pior caso? (Obtido da Referência Básica 1)
j =1 tj + c5 j =1 tj − 1
n −1 n −1
T(n) = c1n + c2(n-1) + c3(n-1) +c4
+ c6 j =1 tj − 1 + c7 (n-1)
n −1
n(n + 1) − 1
1
j =1 i=−11 j =1 ( j + 1) = j =1 j + j =11 = 2 (n − 1)n + (n − 1)
n −1 j −1 n −1 n −1 n −1 1
= = 2
j =1 i=01 = j =1 j =
n −1 j −1 n −1
1
(n − 1)n
2
Algoritmos Iterativos: Análise
Métodos de Ordenação – Inserção Direta – Análise do Tempo (6/6)
b) Algoritmo: oQueSou_2(X, n)
Entrada: um vetor X com n 1 elementos.
Saída: ...???
s←0
para (i ← 0; i n-1; i++) faça
s ← s + X[i]
A[i] ← s/(i+1)
retorne A
Fim-Algoritmo
Pede-se:
i. O que fazem os dois algoritmos?
ii. Realizar a análise de (a) e (b) por meio do custo (tempo).
iii. Considerando que os custos ci de função encontrada no item “ii” tem o
valor numérico “1”, encontre a fórmula numérica de (a) e (b) e faça o
gráfico comparativo dos dois algoritmos.
iv. A partir de “i”, “ii” e da análise dos dois algoritmos, a que conclusão
podemos chegar?
Algoritmos Iterativos: Análise
Exercício (5/11)
4 - POSCOMP – 2004
Algoritmos Iterativos: Análise
Exercício (6/11)
POSCPOMP 2002
7-
8-
Algoritmos Iterativos: Análise
Exercício (10/11)
k
S k = ai
i =1