O documento descreve o modelo incremental para projetar algoritmos de ordenação por indução fraca. Ele apresenta o padrão geral seguido por algoritmos incrementais, que ordenam incrementalmente subconjuntos de tamanho crescente dos dados de entrada. Como exemplo, é descrito o algoritmo de inserção, que ordena um conjunto de tamanho n inserindo recursivamente o elemento restante em um conjunto já ordenado de tamanho n-1.
(ACH2002) Introdução à Análise de Algoritmos - Aula 12
1. Aula 12 – Algoritmos de Ordena¸c˜ao:
Modelo Incremental
Norton Trevisan Roman
norton@usp.br
27 de setembro de 2018
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 1 / 25
2. Ordena¸c˜ao
Trata do problema de ordenar um conjunto de
n ≥ 1 valores
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 2 / 25
3. Ordena¸c˜ao
Trata do problema de ordenar um conjunto de
n ≥ 1 valores
Arranjo, lista ligada etc
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 2 / 25
4. Ordena¸c˜ao
Trata do problema de ordenar um conjunto de
n ≥ 1 valores
Arranjo, lista ligada etc
Podemos projetar por indu¸c˜ao diversos algoritmos
para o problema da ordena¸c˜ao
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 2 / 25
5. Ordena¸c˜ao
Trata do problema de ordenar um conjunto de
n ≥ 1 valores
Arranjo, lista ligada etc
Podemos projetar por indu¸c˜ao diversos algoritmos
para o problema da ordena¸c˜ao
De fato, todos os algoritmos b´asicos de ordena¸c˜ao
surgem de projetos por indu¸c˜ao sutilmente diferentes
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 2 / 25
6. Ordena¸c˜ao
Modelo Incremental: Indu¸c˜ao Fraca
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 3 / 25
7. Ordena¸c˜ao
Modelo Incremental: Indu¸c˜ao Fraca
Padr˜ao seguido pelos algoritmos:
Ordena¸c~aoIncremental(A, n):
Entrada: Arranjo A de n valores
Sa´ıda: Arranjo A ordenado
se n == 1 ent~ao retorne
sen~ao:
<comandos iniciais>
Ordena¸c~aoIncremental(A, n - 1)
<comandos finais>
retorne
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 3 / 25
8. Ordena¸c˜ao
Divis˜ao e Conquista: Indu¸c˜ao Forte
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 4 / 25
9. Ordena¸c˜ao
Divis˜ao e Conquista: Indu¸c˜ao Forte
Padr˜ao seguido pelos algoritmos:
Ordena¸c~aoD&C(A, ini, fim):
Entrada: Arranjo A de n valores
Sa´ıda: Arranjo A ordenado
n = fim - ini + 1
se n == 1 ent~ao retorne
sen~ao:
<comandos iniciais: a divis~ao> (c´alculo de q)
Ordena¸c~aoD&C(A, ini, q)
Ordena¸c~aoD&C(A, q+1, fim)
<comandos finais: a conquista>
retorne
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 4 / 25
10. Projeto por Indu¸c˜ao Fraca
Primeira Alternativa
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 5 / 25
11. Projeto por Indu¸c˜ao Fraca
Primeira Alternativa
Base: n = 1. Um conjunto de um ´unico elemento
est´a ordenado
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 5 / 25
12. Projeto por Indu¸c˜ao Fraca
Primeira Alternativa
Base: n = 1. Um conjunto de um ´unico elemento
est´a ordenado
H.I.: Sei ordenar um conjunto de n − 1 ≥ 1 valores
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 5 / 25
13. Projeto por Indu¸c˜ao Fraca
Primeira Alternativa
Base: n = 1. Um conjunto de um ´unico elemento
est´a ordenado
H.I.: Sei ordenar um conjunto de n − 1 ≥ 1 valores
Passo:
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 5 / 25
14. Projeto por Indu¸c˜ao Fraca
Primeira Alternativa
Base: n = 1. Um conjunto de um ´unico elemento
est´a ordenado
H.I.: Sei ordenar um conjunto de n − 1 ≥ 1 valores
Passo:
Seja S um conjunto de n ≥ 2 valores, e x um elemento
qualquer de S
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 5 / 25
15. Projeto por Indu¸c˜ao Fraca
Primeira Alternativa
Base: n = 1. Um conjunto de um ´unico elemento
est´a ordenado
H.I.: Sei ordenar um conjunto de n − 1 ≥ 1 valores
Passo:
Seja S um conjunto de n ≥ 2 valores, e x um elemento
qualquer de S
Pela H.I., sabemos ordenar o conjunto S − x. Basta ent˜ao
inserir x na posi¸c˜ao correta para obtermos S ordenado
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 5 / 25
16. Projeto por Indu¸c˜ao Fraca
Primeira Alternativa
Base: n = 1. Um conjunto de um ´unico elemento
est´a ordenado
H.I.: Sei ordenar um conjunto de n − 1 ≥ 1 valores
Passo:
Seja S um conjunto de n ≥ 2 valores, e x um elemento
qualquer de S
Pela H.I., sabemos ordenar o conjunto S − x. Basta ent˜ao
inserir x na posi¸c˜ao correta para obtermos S ordenado
M´etodo da Inser¸c˜ao (Insertion Sort)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 5 / 25
17. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
Inser¸c~ao(A, n):
Entrada: Arranjo A de n valores
Sa´ıda: Arranjo A ordenado
se n == 1: retorna // est´a ordenado
sen~ao:
Inser¸c~ao(A, n - 1)
v = A[n-1]
j=n-1
enquanto (j > 0) e (A[j-1] > v) fa¸ca:
A[j] = A[j-1]
j=j-1
A[j] = v
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 6 / 25
18. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
Quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Inser¸c~ao(A, n):
se n == 1: retorna
sen~ao:
Inser¸c~ao(A, n - 1)
v = A[n-1]
j=n-1
enquanto (j > 0) e (A[j-1] > v) fa¸ca:
A[j] = A[j-1]
j=j-1
A[j] = v
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 7 / 25
19. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
Quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Inser¸c~ao(A, n):
se n == 1: retorna
sen~ao:
Inser¸c~ao(A, n - 1)
v = A[n-1]
j=n-1
enquanto (j > 0) e (A[j-1] > v) fa¸ca:
A[j] = A[j-1]
j=j-1
A[j] = v
T(n) =
se n = 1
para n ≥ 2
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 7 / 25
20. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
Quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Inser¸c~ao(A, n):
se n == 1: retorna
sen~ao:
Inser¸c~ao(A, n - 1)
v = A[n-1]
j=n-1
enquanto (j > 0) e (A[j-1] > v) fa¸ca:
A[j] = A[j-1]
j=j-1
A[j] = v
T(n) =
0 se n = 1
para n ≥ 2
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 7 / 25
21. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
Quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Inser¸c~ao(A, n):
se n == 1: retorna
sen~ao:
Inser¸c~ao(A, n - 1)
v = A[n-1]
j=n-1
enquanto (j > 0) e (A[j-1] > v) fa¸ca:
A[j] = A[j-1]
j=j-1
A[j] = v
T(n) =
0 se n = 1
T(n − 1) para n ≥ 2
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 7 / 25
22. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
Quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Inser¸c~ao(A, n):
se n == 1: retorna
sen~ao:
Inser¸c~ao(A, n - 1)
v = A[n-1]
j=n-1
enquanto (j > 0) e (A[j-1] > v) fa¸ca:
A[j] = A[j-1]
j=j-1
A[j] = v
T(n) =
0 se n = 1
T(n − 1) + (n − 1) para n ≥ 2
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 7 / 25
23. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
Ent˜ao
T(n) = T(n − 1) + n − 1
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 8 / 25
24. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
Ent˜ao
T(n) = T(n − 1) + n − 1
= (T(n − 2) + (n − 1) − 1) + n − 1
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 8 / 25
25. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
Ent˜ao
T(n) = T(n − 1) + n − 1
= (T(n − 2) + (n − 1) − 1) + n − 1
T(n − 2) + 2n − 2 − 1
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 8 / 25
26. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
Ent˜ao
T(n) = T(n − 1) + n − 1
= (T(n − 2) + (n − 1) − 1) + n − 1
T(n − 2) + 2n − 2 − 1
= (T(n − 3) + (n − 2) − 1) + 2n − 2 − 1
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 8 / 25
27. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
Ent˜ao
T(n) = T(n − 1) + n − 1
= (T(n − 2) + (n − 1) − 1) + n − 1
T(n − 2) + 2n − 2 − 1
= (T(n − 3) + (n − 2) − 1) + 2n − 2 − 1
T(n − 3) + 3n − 3 − 2 − 1
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 8 / 25
28. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
Ent˜ao
T(n) = T(n − 1) + n − 1
= (T(n − 2) + (n − 1) − 1) + n − 1
T(n − 2) + 2n − 2 − 1
= (T(n − 3) + (n − 2) − 1) + 2n − 2 − 1
T(n − 3) + 3n − 3 − 2 − 1
. . .
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 8 / 25
29. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
Ent˜ao
T(n) = T(n − 1) + n − 1
= (T(n − 2) + (n − 1) − 1) + n − 1
T(n − 2) + 2n − 2 − 1
= (T(n − 3) + (n − 2) − 1) + 2n − 2 − 1
T(n − 3) + 3n − 3 − 2 − 1
. . .
= T(n − k) + kn −
k
i=1
i
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 8 / 25
30. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
E
T(n) = T(n − k) + kn −
k
i=1
i
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 9 / 25
31. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
E
T(n) = T(n − k) + kn −
k
i=1
i
= T(1) + kn −
k
i=1
i, em T(n − k) = T(1)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 9 / 25
32. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
E
T(n) = T(n − k) + kn −
k
i=1
i
= T(1) + kn −
k
i=1
i, em T(n − k) = T(1)
= T(1) + (n − 1)n −
n−1
i=1
i, pois n − k = 1
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 9 / 25
33. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
E
T(n) = T(n − k) + kn −
k
i=1
i
= T(1) + kn −
k
i=1
i, em T(n − k) = T(1)
= T(1) + (n − 1)n −
n−1
i=1
i, pois n − k = 1
= (n − 1)n −
n−1
i=1
i, pois T(1) = 0
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 9 / 25
34. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
E
T(n) = T(n − k) + kn −
k
i=1
i
= T(1) + kn −
k
i=1
i, em T(n − k) = T(1)
= T(1) + (n − 1)n −
n−1
i=1
i, pois n − k = 1
= (n − 1)n −
n−1
i=1
i, pois T(1) = 0
= (n − 1)n −
(n − 1)n
2
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 9 / 25
35. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
T(n) = (n − 1)n −
(n − 1)n
2
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 10 / 25
36. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
T(n) = (n − 1)n −
(n − 1)n
2
= n2
− n −
n2
− n
2
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 10 / 25
37. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
T(n) = (n − 1)n −
(n − 1)n
2
= n2
− n −
n2
− n
2
=
n2
− n
2
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 10 / 25
38. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
T(n) = (n − 1)n −
(n − 1)n
2
= n2
− n −
n2
− n
2
=
n2
− n
2
= Θ(n2
)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 10 / 25
39. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
Usando a
nota¸c˜ao O,
quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Inser¸c~ao(A, n):
se n == 1: retorna
sen~ao:
Inser¸c~ao(A, n - 1)
v = A[n-1]
j=n-1
enquanto (j > 0) e (A[j-1] > v) fa¸ca:
A[j] = A[j-1]
j=j-1
A[j] = v
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 11 / 25
40. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
Usando a
nota¸c˜ao O,
quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Inser¸c~ao(A, n):
se n == 1: retorna
sen~ao:
Inser¸c~ao(A, n - 1)
v = A[n-1]
j=n-1
enquanto (j > 0) e (A[j-1] > v) fa¸ca:
A[j] = A[j-1]
j=j-1
A[j] = v
T(n) =
se n = 1
para n ≥ 2
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 11 / 25
41. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
Usando a
nota¸c˜ao O,
quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Inser¸c~ao(A, n):
se n == 1: retorna
sen~ao:
Inser¸c~ao(A, n - 1)
v = A[n-1]
j=n-1
enquanto (j > 0) e (A[j-1] > v) fa¸ca:
A[j] = A[j-1]
j=j-1
A[j] = v
T(n) =
O(1) se n = 1
para n ≥ 2
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 11 / 25
42. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
Usando a
nota¸c˜ao O,
quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Inser¸c~ao(A, n):
se n == 1: retorna
sen~ao:
Inser¸c~ao(A, n - 1)
v = A[n-1]
j=n-1
enquanto (j > 0) e (A[j-1] > v) fa¸ca:
A[j] = A[j-1]
j=j-1
A[j] = v
T(n) =
O(1) se n = 1
T(n − 1) para n ≥ 2
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 11 / 25
43. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
Usando a
nota¸c˜ao O,
quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Inser¸c~ao(A, n):
se n == 1: retorna
sen~ao:
Inser¸c~ao(A, n - 1)
v = A[n-1]
j=n-1
enquanto (j > 0) e (A[j-1] > v) fa¸ca:
A[j] = A[j-1]
j=j-1
A[j] = v
T(n) =
O(1) se n = 1
T(n − 1) + O(n) para n ≥ 2
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 11 / 25
44. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
E
T(n) = T(n − 1) + O(n)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 12 / 25
45. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
E
T(n) = T(n − 1) + O(n)
= (T(n − 2) + O(n)) + O(n)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 12 / 25
46. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
E
T(n) = T(n − 1) + O(n)
= (T(n − 2) + O(n)) + O(n)
= (T(n − 3) + O(n)) + O(n) + O(n)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 12 / 25
47. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
E
T(n) = T(n − 1) + O(n)
= (T(n − 2) + O(n)) + O(n)
= (T(n − 3) + O(n)) + O(n) + O(n)
. . .
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 12 / 25
48. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
E
T(n) = T(n − 1) + O(n)
= (T(n − 2) + O(n)) + O(n)
= (T(n − 3) + O(n)) + O(n) + O(n)
. . .
= T(n − k) + kO(n)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 12 / 25
49. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
E
T(n) = T(n − 1) + O(n)
= (T(n − 2) + O(n)) + O(n)
= (T(n − 3) + O(n)) + O(n) + O(n)
. . .
= T(n − k) + kO(n)
= T(1) + (n − 1)O(n), quando T(n − k) = T(1)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 12 / 25
50. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
E
T(n) = T(n − 1) + O(n)
= (T(n − 2) + O(n)) + O(n)
= (T(n − 3) + O(n)) + O(n) + O(n)
. . .
= T(n − k) + kO(n)
= T(1) + (n − 1)O(n), quando T(n − k) = T(1)
= O(1) + O(n2
) − O(n)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 12 / 25
51. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (recursivo)
E
T(n) = T(n − 1) + O(n)
= (T(n − 2) + O(n)) + O(n)
= (T(n − 3) + O(n)) + O(n) + O(n)
. . .
= T(n − k) + kO(n)
= T(1) + (n − 1)O(n), quando T(n − k) = T(1)
= O(1) + O(n2
) − O(n)
= O(n2
)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 12 / 25
52. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (iterativo)
Inser¸c~ao(A, n):
Entrada: Arranjo A de n valores
Sa´ıda: Arranjo A ordenado
para i = 1 at´e n - 1 fa¸ca:
v = A[i]
j=i
enquanto (j > 0) e (A[j-1] > v) fa¸ca:
A[j] = A[j-1]
j=j-1
A[j] = v
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 13 / 25
53. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (iterativo)
Usando a
nota¸c˜ao O,
quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Inser¸c~ao(A, n):
Entrada: Arranjo A de n valores
Sa´ıda: Arranjo A ordenado
para i = 1 at´e n - 1 fa¸ca:
v = A[i]
j=i
enquanto (j > 0) e (A[j-1] > v) fa¸ca:
A[j] = A[j-1]
j=j-1
A[j] = v
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 14 / 25
54. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (iterativo)
Usando a
nota¸c˜ao O,
quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Inser¸c~ao(A, n):
Entrada: Arranjo A de n valores
Sa´ıda: Arranjo A ordenado
para i = 1 at´e n - 1 fa¸ca:
v = A[i]
j=i
enquanto (j > 0) e (A[j-1] > v) fa¸ca:
A[j] = A[j-1]
j=j-1
A[j] = v
O(n)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 14 / 25
55. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (iterativo)
Usando a
nota¸c˜ao O,
quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Inser¸c~ao(A, n):
Entrada: Arranjo A de n valores
Sa´ıda: Arranjo A ordenado
para i = 1 at´e n - 1 fa¸ca:
v = A[i]
j=i
enquanto (j > 0) e (A[j-1] > v) fa¸ca:
A[j] = A[j-1]
j=j-1
A[j] = v
O(n) × O(n)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 14 / 25
56. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (iterativo)
Usando a
nota¸c˜ao O,
quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Inser¸c~ao(A, n):
Entrada: Arranjo A de n valores
Sa´ıda: Arranjo A ordenado
para i = 1 at´e n - 1 fa¸ca:
v = A[i]
j=i
enquanto (j > 0) e (A[j-1] > v) fa¸ca:
A[j] = A[j-1]
j=j-1
A[j] = v
O(n) × O(n) = O(n2
)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 14 / 25
57. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (iterativo)
Usando a
nota¸c˜ao O,
quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Inser¸c~ao(A, n):
Entrada: Arranjo A de n valores
Sa´ıda: Arranjo A ordenado
para i = 1 at´e n - 1 fa¸ca:
v = A[i]
j=i
enquanto (j > 0) e (A[j-1] > v) fa¸ca:
A[j] = A[j-1]
j=j-1
A[j] = v
O(n) × O(n) = O(n2
) Bem mais f´acil!!!
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 14 / 25
58. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (iterativo)
E quantas
trocas de
elementos s˜ao
feitas no
arranjo no pior
caso?
Inser¸c~ao(A, n):
Entrada: Arranjo A de n valores
Sa´ıda: Arranjo A ordenado
para i = 1 at´e n - 1 fa¸ca:
v = A[i]
j=i
enquanto (j > 0) e (A[j-1] > v) fa¸ca:
A[j] = A[j-1]
j=j-1
A[j] = v
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 15 / 25
59. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (iterativo)
E quantas
trocas de
elementos s˜ao
feitas no
arranjo no pior
caso?
Inser¸c~ao(A, n):
Entrada: Arranjo A de n valores
Sa´ıda: Arranjo A ordenado
para i = 1 at´e n - 1 fa¸ca:
v = A[i]
j=i
enquanto (j > 0) e (A[j-1] > v) fa¸ca:
A[j] = A[j-1]
j=j-1
A[j] = v
O(n)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 15 / 25
60. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (iterativo)
E quantas
trocas de
elementos s˜ao
feitas no
arranjo no pior
caso?
Inser¸c~ao(A, n):
Entrada: Arranjo A de n valores
Sa´ıda: Arranjo A ordenado
para i = 1 at´e n - 1 fa¸ca:
v = A[i]
j=i
enquanto (j > 0) e (A[j-1] > v) fa¸ca:
A[j] = A[j-1]
j=j-1
A[j] = v
O(n) + O(n)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 15 / 25
61. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (iterativo)
E quantas
trocas de
elementos s˜ao
feitas no
arranjo no pior
caso?
Inser¸c~ao(A, n):
Entrada: Arranjo A de n valores
Sa´ıda: Arranjo A ordenado
para i = 1 at´e n - 1 fa¸ca:
v = A[i]
j=i
enquanto (j > 0) e (A[j-1] > v) fa¸ca:
A[j] = A[j-1]
j=j-1
A[j] = v
O(n) + O(n) × O(n)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 15 / 25
62. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (iterativo)
E quantas
trocas de
elementos s˜ao
feitas no
arranjo no pior
caso?
Inser¸c~ao(A, n):
Entrada: Arranjo A de n valores
Sa´ıda: Arranjo A ordenado
para i = 1 at´e n - 1 fa¸ca:
v = A[i]
j=i
enquanto (j > 0) e (A[j-1] > v) fa¸ca:
A[j] = A[j-1]
j=j-1
A[j] = v
O(n) + O(n) × O(n) = O(n2
)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 15 / 25
63. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao (iterativo)
E quantas
trocas de
elementos s˜ao
feitas no
arranjo no pior
caso?
Inser¸c~ao(A, n):
Entrada: Arranjo A de n valores
Sa´ıda: Arranjo A ordenado
para i = 1 at´e n - 1 fa¸ca:
v = A[i]
j=i
enquanto (j > 0) e (A[j-1] > v) fa¸ca:
A[j] = A[j-1]
j=j-1
A[j] = v
O(n) + O(n) × O(n) = O(n2
) O mesmo valor.
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 15 / 25
64. Projeto por Indu¸c˜ao Fraca
M´etodo da Inser¸c˜ao: recursivo × iterativo
Inser¸c~ao(A, n):
se n == 1: retorna
sen~ao:
Inser¸c~ao(A, n - 1)
v = A[n-1]
j=n-1
enquanto (j > 0) e
(A[j-1] > v) fa¸ca:
A[j] = A[j-1]
j=j-1
A[j] = v
Inser¸c~ao(A, n):
para i = 1 at´e n - 1 fa¸ca:
v = A[i]
j=i
enquanto (j > 0) e
(A[j-1] > v) fa¸ca:
A[j] = A[j-1]
j=j-1
A[j] = v
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 16 / 25
65. Projeto por Indu¸c˜ao Fraca
Segunda Alternativa
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 17 / 25
66. Projeto por Indu¸c˜ao Fraca
Segunda Alternativa
Base: n = 1. Um ´unico elemento est´a ordenado
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 17 / 25
67. Projeto por Indu¸c˜ao Fraca
Segunda Alternativa
Base: n = 1. Um ´unico elemento est´a ordenado
H.I.: Sei ordenar um conjunto de n − 1 ≥ 1 valores
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 17 / 25
68. Projeto por Indu¸c˜ao Fraca
Segunda Alternativa
Base: n = 1. Um ´unico elemento est´a ordenado
H.I.: Sei ordenar um conjunto de n − 1 ≥ 1 valores
Passo:
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 17 / 25
69. Projeto por Indu¸c˜ao Fraca
Segunda Alternativa
Base: n = 1. Um ´unico elemento est´a ordenado
H.I.: Sei ordenar um conjunto de n − 1 ≥ 1 valores
Passo:
Seja S um conjunto de n ≥ 2 valores, e x o menor elemento
de S
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 17 / 25
70. Projeto por Indu¸c˜ao Fraca
Segunda Alternativa
Base: n = 1. Um ´unico elemento est´a ordenado
H.I.: Sei ordenar um conjunto de n − 1 ≥ 1 valores
Passo:
Seja S um conjunto de n ≥ 2 valores, e x o menor elemento
de S
Ent˜ao x certamente ´e o primeiro elemento da sequˆencia
ordenada de S. Por hip´otese de indu¸c˜ao, sabemos ordenar os
demais S − x elementos, e assim obtemos S ordenado
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 17 / 25
71. Projeto por Indu¸c˜ao Fraca
Segunda Alternativa
Base: n = 1. Um ´unico elemento est´a ordenado
H.I.: Sei ordenar um conjunto de n − 1 ≥ 1 valores
Passo:
Seja S um conjunto de n ≥ 2 valores, e x o menor elemento
de S
Ent˜ao x certamente ´e o primeiro elemento da sequˆencia
ordenada de S. Por hip´otese de indu¸c˜ao, sabemos ordenar os
demais S − x elementos, e assim obtemos S ordenado
M´etodo da Sele¸c˜ao (Selection Sort)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 17 / 25
72. Projeto por Indu¸c˜ao Fraca
M´etodo da Sele¸c˜ao (recursivo)
Sele¸c~ao(A, ini, fim):
Entrada: Arranjo A de n valores e os ´ındices
de in´ıcio e t´ermino da sequ^encia a ser ordenada
Sa´ıda: Arranjo A ordenado
se ini < fim ent~ao:
min = ini
para j = ini+1 at´e fim fa¸ca:
se A[j] < A[min] ent~ao: min = j
t = A[min]
A[min] = A[ini]
A[ini] = t
Sele¸c~ao(A, ini+1, fim)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 18 / 25
73. Projeto por Indu¸c˜ao Fraca
M´etodo da Sele¸c˜ao (recursivo)
Quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Sele¸c~ao(A, ini, fim):
se ini < fim ent~ao:
min = ini
para j = ini+1 at´e fim fa¸ca:
se A[j] < A[min] ent~ao: min = j
t = A[min]
A[min] = A[ini]
A[ini] = t
Sele¸c~ao(A, ini+1, fim)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 19 / 25
74. Projeto por Indu¸c˜ao Fraca
M´etodo da Sele¸c˜ao (recursivo)
Quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Sele¸c~ao(A, ini, fim):
se ini < fim ent~ao:
min = ini
para j = ini+1 at´e fim fa¸ca:
se A[j] < A[min] ent~ao: min = j
t = A[min]
A[min] = A[ini]
A[ini] = t
Sele¸c~ao(A, ini+1, fim)
T(n) =
se n = 1
para n ≥ 2
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 19 / 25
75. Projeto por Indu¸c˜ao Fraca
M´etodo da Sele¸c˜ao (recursivo)
Quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Sele¸c~ao(A, ini, fim):
se ini < fim ent~ao:
min = ini
para j = ini+1 at´e fim fa¸ca:
se A[j] < A[min] ent~ao: min = j
t = A[min]
A[min] = A[ini]
A[ini] = t
Sele¸c~ao(A, ini+1, fim)
T(n) =
O(1) se n = 1
para n ≥ 2
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 19 / 25
76. Projeto por Indu¸c˜ao Fraca
M´etodo da Sele¸c˜ao (recursivo)
Quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Sele¸c~ao(A, ini, fim):
se ini < fim ent~ao:
min = ini
para j = ini+1 at´e fim fa¸ca:
se A[j] < A[min] ent~ao: min = j
t = A[min]
A[min] = A[ini]
A[ini] = t
Sele¸c~ao(A, ini+1, fim)
T(n) =
O(1) se n = 1
O(n) para n ≥ 2
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 19 / 25
77. Projeto por Indu¸c˜ao Fraca
M´etodo da Sele¸c˜ao (recursivo)
Quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Sele¸c~ao(A, ini, fim):
se ini < fim ent~ao:
min = ini
para j = ini+1 at´e fim fa¸ca:
se A[j] < A[min] ent~ao: min = j
t = A[min]
A[min] = A[ini]
A[ini] = t
Sele¸c~ao(A, ini+1, fim)
T(n) =
O(1) se n = 1
O(n) + T(n − 1) para n ≥ 2
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 19 / 25
78. Projeto por Indu¸c˜ao Fraca
M´etodo da Sele¸c˜ao (recursivo)
Quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Sele¸c~ao(A, ini, fim):
se ini < fim ent~ao:
min = ini
para j = ini+1 at´e fim fa¸ca:
se A[j] < A[min] ent~ao: min = j
t = A[min]
A[min] = A[ini]
A[ini] = t
Sele¸c~ao(A, ini+1, fim)
T(n) =
O(1) se n = 1
O(n) + T(n − 1) para n ≥ 2
= O(n2
)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 19 / 25
79. Projeto por Indu¸c˜ao Fraca
M´etodo da Sele¸c˜ao (iterativo)
Sele¸c~ao(A, n):
Entrada: Arranjo A de n valores
Sa´ıda: Arranjo A ordenado
para i = 0 at´e n-2 fa¸ca:
min = i
para j = i+1 at´e n-1 fa¸ca:
se A[j] < A[min] ent~ao: min = j
t = A[min]
A[min] = A[i]
A[i] = t
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 20 / 25
80. Projeto por Indu¸c˜ao Fraca
M´etodo da Sele¸c˜ao (iterativo)
Usando a
nota¸c˜ao O,
quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Sele¸c~ao(A, n):
Entrada: Arranjo A de n valores
Sa´ıda: Arranjo A ordenado
para i = 0 at´e n-2 fa¸ca:
min = i
para j = i+1 at´e n-1 fa¸ca:
se A[j] < A[min] ent~ao: min = j
t = A[min]
A[min] = A[i]
A[i] = t
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 21 / 25
81. Projeto por Indu¸c˜ao Fraca
M´etodo da Sele¸c˜ao (iterativo)
Usando a
nota¸c˜ao O,
quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Sele¸c~ao(A, n):
Entrada: Arranjo A de n valores
Sa´ıda: Arranjo A ordenado
para i = 0 at´e n-2 fa¸ca:
min = i
para j = i+1 at´e n-1 fa¸ca:
se A[j] < A[min] ent~ao: min = j
t = A[min]
A[min] = A[i]
A[i] = t
O(n)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 21 / 25
82. Projeto por Indu¸c˜ao Fraca
M´etodo da Sele¸c˜ao (iterativo)
Usando a
nota¸c˜ao O,
quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Sele¸c~ao(A, n):
Entrada: Arranjo A de n valores
Sa´ıda: Arranjo A ordenado
para i = 0 at´e n-2 fa¸ca:
min = i
para j = i+1 at´e n-1 fa¸ca:
se A[j] < A[min] ent~ao: min = j
t = A[min]
A[min] = A[i]
A[i] = t
O(n) × O(n)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 21 / 25
83. Projeto por Indu¸c˜ao Fraca
M´etodo da Sele¸c˜ao (iterativo)
Usando a
nota¸c˜ao O,
quantas
compara¸c˜oes
no arranjo s˜ao
feitas no pior
caso?
Sele¸c~ao(A, n):
Entrada: Arranjo A de n valores
Sa´ıda: Arranjo A ordenado
para i = 0 at´e n-2 fa¸ca:
min = i
para j = i+1 at´e n-1 fa¸ca:
se A[j] < A[min] ent~ao: min = j
t = A[min]
A[min] = A[i]
A[i] = t
O(n) × O(n) = O(n2
)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 21 / 25
84. Projeto por Indu¸c˜ao Fraca
M´etodo da Sele¸c˜ao (iterativo)
E quantas
trocas de
elementos s˜ao
feitas no
arranjo no pior
caso?
Sele¸c~ao(A, n):
Entrada: Arranjo A de n valores
Sa´ıda: Arranjo A ordenado
para i = 0 at´e n-2 fa¸ca:
min = i
para j = i+1 at´e n-1 fa¸ca:
se A[j] < A[min] ent~ao: min = j
t = A[min]
A[min] = A[i]
A[i] = t
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 22 / 25
85. Projeto por Indu¸c˜ao Fraca
M´etodo da Sele¸c˜ao (iterativo)
E quantas
trocas de
elementos s˜ao
feitas no
arranjo no pior
caso?
Sele¸c~ao(A, n):
Entrada: Arranjo A de n valores
Sa´ıda: Arranjo A ordenado
para i = 0 at´e n-2 fa¸ca:
min = i
para j = i+1 at´e n-1 fa¸ca:
se A[j] < A[min] ent~ao: min = j
t = A[min]
A[min] = A[i]
A[i] = t
O(n)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 22 / 25
86. Projeto por Indu¸c˜ao Fraca
M´etodo da Sele¸c˜ao: recursivo × iterativo
Sele¸c~ao(A, ini, fim):
se ini < fim ent~ao:
min = ini
para j=ini+1 at´e fim fa¸ca:
se A[j] < A[min] ent~ao:
min = j
t = A[min]
A[min] = A[ini]
A[ini] = t
Sele¸c~ao(A, ini+1, fim)
Sele¸c~ao(A, n):
para i = 0 at´e n-2 fa¸ca:
min = i
para j = i+1 at´e n-1 fa¸ca:
se A[j] < A[min] ent~ao:
min = j
t = A[min]
A[min] = A[i]
A[i] = t
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 23 / 25
87. Projeto por Indu¸c˜ao Fraca
Inser¸c˜ao × Sele¸c˜ao
Inser¸c˜ao: Sele¸c˜ao:
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 24 / 25
88. Projeto por Indu¸c˜ao Fraca
Inser¸c˜ao × Sele¸c˜ao
Inser¸c˜ao:
Compara¸c˜oes: O(n2
)
Sele¸c˜ao:
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 24 / 25
89. Projeto por Indu¸c˜ao Fraca
Inser¸c˜ao × Sele¸c˜ao
Inser¸c˜ao:
Compara¸c˜oes: O(n2
)
Sele¸c˜ao:
Compara¸c˜oes: O(n2
)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 24 / 25
90. Projeto por Indu¸c˜ao Fraca
Inser¸c˜ao × Sele¸c˜ao
Inser¸c˜ao:
Compara¸c˜oes: O(n2
)
Trocas: O(n2
)
Sele¸c˜ao:
Compara¸c˜oes: O(n2
)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 24 / 25
91. Projeto por Indu¸c˜ao Fraca
Inser¸c˜ao × Sele¸c˜ao
Inser¸c˜ao:
Compara¸c˜oes: O(n2
)
Trocas: O(n2
)
Sele¸c˜ao:
Compara¸c˜oes: O(n2
)
Trocas: O(n)
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 24 / 25
92. Projeto por Indu¸c˜ao Fraca
Inser¸c˜ao × Sele¸c˜ao
Inser¸c˜ao:
Compara¸c˜oes: O(n2
)
Trocas: O(n2
)
Sele¸c˜ao:
Compara¸c˜oes: O(n2
)
Trocas: O(n)
Apesar dos algoritmos de ordena¸c˜ao por Inser¸c˜ao e
Sele¸c˜ao terem a mesma complexidade assint´otica
em compara¸c˜oes, em situa¸c˜oes onde a opera¸c˜ao de
troca ´e muito custosa ´e prefer´ıvel utilizar a Sele¸c˜ao
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 24 / 25
93. Referˆencias
Material baseado em slides dos professores Cid de Souza,
Cˆandida da Silva e Delano Beder
Cormen, Thomas H., Leiserson, Charles E., Rivest, Ronald L.,
Stein, Clifford. Introduction to Algorithms. 2a ed. MIT Press,
2001.
Norton Trevisan Romannorton@usp.br Aula 12 – Algoritmos de Ordena¸c˜ao: Modelo Incremental27 de setembro de 2018 25 / 25