Professional Documents
Culture Documents
Introdução
Insertion_Sort(A)
i j
Insertion_Sort(A) A = [5,2,4,6,1,3]
key = 2
1 for j=2 to 6
2 do key = A[j]
3 i = j-1
4 while i>0 and A[i] > key
5 do A[i+1] = A[i] A = [2,5,4,6,1,3]
6 i=i-1
7 A[i+1] = key
Insertion Sort
i j
Insertion_Sort(A) A = [2,5,4,6,1,3]
key = 4
1 for j=2 to 6
2 do key = A[j]
3 i = j-1
4 while i>0 and A[i] > key
5 do A[i+1] = A[i] A = [2,4,5,6,1,3]
6 i=i-1
7 A[i+1] = key
Insertion Sort
i j
Insertion_Sort(A) A = [2,4,5,6,1,3]
key = 6
1 for j=2 to 6
2 do key = A[j]
3 i = j-1
4 while i>0 and A[i] > key
5 do A[i+1] = A[i]
6 i=i-1
7 A[i+1] = key
Insertion Sort
i j
Insertion_Sort(A) A = [2,4,5,6,1,3]
key = 1
1 for j=2 to 6
2 do key = A[j]
i
3 i = j-1 A = [2,4,5,6,1,3]
4 while i>0 and A[i] > key i
5 do A[i+1] = A[i] A = [2,4,5,6,6,3]
6 i=i-1 i
7 A[i+1] = key A = [2,4,5,5,6,3]
i
A = [2,4,4,5,6,3]
i
A = [2,2,4,5,6,3]
i
A = [1,2,4,5,6,3]
Insertion Sort: Complexidade
j
2
1
j 2 2
Custo Tempo j 2
c1 n
c2 n-1
c3 n-1 T (n) c1n c2 (n 1) c3 (n 1)
nj 2 j
c4 n(n 1) n(n 1) n(n 1)
nj 2 ( j 1) c4 1 c5 c6 c7 (n 1)
c5 2 2 2
nj 2 ( j 1)
c6
c7 n-1
Insertion Sort: Complexidade
• O pior caso é quando a lista está invertida
(tj=j):
n(n 1) n( n 1) n(n 1)
T (n) c1n c2 ( n 1) c3 (n 1) c4 1 c5 c6 c7 (n 1)
2 2 2
c c c c c c
T (n) 4 5 6 n 2 c1 c2 c3 4 5 6 c7 n (c2 c3 c4 c7 )
2 2 2 2 2 2
c c c
a 4 5 6
2 2 2
c c c
b c1 c2 c3 4 5 6 c7
2 2 2
c c2 c3 c4 c7
T (n) an 2 bn c
Insertion Sort: Complexidade
• Melhor caso:
T ( n) an c (n)
• Pior caso:
T (n) an 2 bn c (n 2 )
Insertion Sort: Complexidade
• Como seria o caso médio (vetor parcialmente
ordenado)?
Próxima aula...
• Merge Sort
– Baseado em divisão e conquista.
– Complexidade menor que o Insert Sort.
– Recursivo