SlideShare uma empresa Scribd logo
1 de 93
Baixar para ler offline
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

Mais conteúdo relacionado

Semelhante a (ACH2002) Introdução à Análise de Algoritmos - Aula 12

Semelhante a (ACH2002) Introdução à Análise de Algoritmos - Aula 12 (7)

(ACH2002) Introdução à Análise de Algoritmos - Aula 19
(ACH2002) Introdução à Análise de Algoritmos - Aula 19(ACH2002) Introdução à Análise de Algoritmos - Aula 19
(ACH2002) Introdução à Análise de Algoritmos - Aula 19
 
(ACH2002) Introdução à Análise de Algoritmos - Aula 08
(ACH2002) Introdução à Análise de Algoritmos - Aula 08(ACH2002) Introdução à Análise de Algoritmos - Aula 08
(ACH2002) Introdução à Análise de Algoritmos - Aula 08
 
Análise de Algoritmos - Problemas, instâncias, algoritmos e tempo
Análise de Algoritmos - Problemas, instâncias, algoritmos e tempoAnálise de Algoritmos - Problemas, instâncias, algoritmos e tempo
Análise de Algoritmos - Problemas, instâncias, algoritmos e tempo
 
Matemática Computacional
Matemática ComputacionalMatemática Computacional
Matemática Computacional
 
Algoritmos de ordenação
Algoritmos de ordenaçãoAlgoritmos de ordenação
Algoritmos de ordenação
 
(ACH2002) Introdução à Análise de Algoritmos - Aula 02
(ACH2002) Introdução à Análise de Algoritmos - Aula 02(ACH2002) Introdução à Análise de Algoritmos - Aula 02
(ACH2002) Introdução à Análise de Algoritmos - Aula 02
 
(ACH2001) Introdução à Programação - Aula 13
(ACH2001) Introdução à Programação - Aula 13(ACH2001) Introdução à Programação - Aula 13
(ACH2001) Introdução à Programação - Aula 13
 

Mais de Norton Trevisan Roman

Mais de Norton Trevisan Roman (20)

(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24
 
(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23
 
(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22
 
(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21
 
(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20
 
(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19
 
(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18
 
(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17
 
(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16
 
(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15
 
(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14
 
(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13
 
(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12
 
(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11
 
(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10
 
(ACH2044) Inteligência Artificial - Aula 09
(ACH2044) Inteligência Artificial - Aula 09(ACH2044) Inteligência Artificial - Aula 09
(ACH2044) Inteligência Artificial - Aula 09
 
(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08
 
(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07
 
(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06
 
(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05
 

Último

GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
RavenaSales1
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
rosenilrucks
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
marlene54545
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
LeloIurk1
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
TailsonSantos1
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
LeloIurk1
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
CleidianeCarvalhoPer
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
TailsonSantos1
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
LeloIurk1
 

Último (20)

GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
 
Aula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIXAula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIX
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 
Seminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptxSeminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptx
 
Projeto Nós propomos! Sertã, 2024 - Chupetas Eletrónicas.pptx
Projeto Nós propomos! Sertã, 2024 - Chupetas Eletrónicas.pptxProjeto Nós propomos! Sertã, 2024 - Chupetas Eletrónicas.pptx
Projeto Nós propomos! Sertã, 2024 - Chupetas Eletrónicas.pptx
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
 

(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