atal análise e técnicas de
TRANSCRIPT
![Page 1: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/1.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 1
2003.2ATAL Análise e Técnicas de
Algoritmos
Análise de Algoritmos de Ordenação
![Page 2: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/2.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 2
2003.2ATAL Problema da Ordenação
• Formalmente pode assim ser definido:
OrdenaçãoEntrada: Uma seqüência de n números ‹a1, a2, ..., an›.Saída: Uma reordenação da seqûëncia de entrada ‹a'1, a'2, ..., a'n›, onde a'1 ≤ a'2 ≤ ... ≤ a'n.
Em geral, consideramos a seqüência de entrada como um array de n elementos.
![Page 3: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/3.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 3
2003.2ATAL Estratégia de Ordenação
• Alguns algoritmos clássicos de ordenação utilizam divisão-e-conquista:– Quebra a entrada original em duas partes.– Recursivamente ordena cada uma das partes.– Combina as duas partes ordenadas.
• Duas categorias de soluções:– Quebra simples, combinação difícil.– Quebra difícil, combinação simples.
![Page 4: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/4.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 4
2003.2ATAL Insertion Sort
A:1 j n
ORDENADO chave
InsertionSort(A, n)for j← 2 to n do
chave ← A[j] insere A[j] na parte ordenada A[1..j-1]i ← j – 1while i > 0 e A[i] > chave do
A[i + 1] ← A[i]i ← i – 1
A[i + 1] ← chave
![Page 5: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/5.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 5
2003.2ATAL Exemplo do Insertion Sort
45 7 13 23 2
![Page 6: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/6.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 6
2003.2ATAL Exemplo do Insertion Sort
45 7 13 23 2
![Page 7: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/7.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 7
2003.2ATAL Exemplo do Insertion Sort
45 7 13 23 2
7 45 13 23 2
![Page 8: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/8.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 8
2003.2ATAL Exemplo do Insertion Sort
45 7 13 23 2
7 45 13 23 2
![Page 9: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/9.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 9
2003.2ATAL Exemplo do Insertion Sort
45 7 13 23 2
7 45 13 23 2
7 13 45 23 2
![Page 10: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/10.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 10
2003.2ATAL Exemplo do Insertion Sort
45 7 13 23 2
7 45 13 23 2
7 13 45 23 2
![Page 11: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/11.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 11
2003.2ATAL Exemplo do Insertion Sort
45 7 13 23 2
7 45 13 23 2
7 13 45 23 2
7 13 23 45 2
![Page 12: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/12.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 12
2003.2ATAL Exemplo do Insertion Sort
45 7 13 23 2
7 45 13 23 2
7 13 45 23 2
7 13 23 45 2
![Page 13: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/13.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 13
2003.2ATAL Exemplo do Insertion Sort
45 7 13 23 2
7 45 13 23 2
7 13 45 23 2
7 13 23 45 2
2 7 13 23 45
![Page 14: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/14.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 14
2003.2ATAL Análise do Insertion Sort
• Pior caso:– Entrada em ordem reversa.– O(n2)
• Caso médio:– O(n2)
• Melhor caso:– Entrada ordenada.– O(n)
![Page 15: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/15.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 15
2003.2ATAL MergeSort
• Partição simples.• Combinação mais trabalhosa.
3 72 1 5 47 34 20 10 9 23
3 72 1 5 47 34 20 10 9 23
9 10 20 23 341 3 5 47 72
1 3 5 9 10 20 23 34 47 72
simples
ordena
combina
quebra
difícil
![Page 16: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/16.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 16
2003.2ATAL Análise do MergeSort
• Requer resolução de recorrência.• Melhor caso = Caso médio = Pior caso.
– O(n.logn)
MergeSort(A, inicio, fim)if inicio < fim then
meio ← (inicio + fim) div 2MergeSort(A, inicio, meio)MergeSort(A, meio + 1, fim)Intercala(A, inicio, meio, fim)
![Page 17: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/17.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 17
2003.2ATAL QuickSort
• Proposto por C.A.R. Hoare em 1962.• Como o MergeSort, utiliza uma estratégia de
divisão-e-conquista.• A parte mais complicada é a quebra.• A combinação é simples.• Ao contrário do MergeSort, ordena in place.• Ponto chave é encontrar uma estratégia de
particionamento eficiente.
![Page 18: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/18.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 18
2003.2ATAL QuickSort
• Divisão: escolher um pivô. Dividir o array em duas partes em torno do pivô.
≤ p p > p
pivô
• Conquista: Recursivamente ordenar os dois sub-arrays.
• Combinação: Trivial.
![Page 19: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/19.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 19
2003.2ATAL QuickSort
3 72 1 5 47 34 20 10 9 23
3 20 1 5 10 9 23 47 34 72
20 23 34 47 721 3 5 9 10
1 3 5 9 10 20 23 34 47 72
difícil
ordena
combina
quebra
simples
![Page 20: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/20.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 20
2003.2ATAL Escolha do Pivô
• Particionamento pode ser feito de diferentes formas.
• A principal decisão é escolher o pivô.– Primeiro elemento do array.– Último elemento do array.– Elemento médio do array.– Elemento que mais ocorre no array.– Elemento mais próximo da média aritmética dos
elementos do array.
![Page 21: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/21.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 21
2003.2ATAL Rotina de Particionamento
• Em nossa rotina, o pivô é o último elemento.
Particiona(A, L, R)p ← A[R]i ← Rfor j ← R – 1 downto L do
if A[j] > p theni ← i – 1swap A[i] ↔ A[j]
swap A[R] ↔ A[i]return i
![Page 22: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/22.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 22
2003.2ATAL Exemplo de Particionamento
3 72 1 5 47 34 20 10 9 23
![Page 23: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/23.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 23
2003.2ATAL Exemplo de Particionamento
3 72 1 5 47 34 20 10 9 23ij
![Page 24: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/24.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 24
2003.2ATAL Exemplo de Particionamento
3 72 1 5 47 34 20 10 9 23i←j
![Page 25: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/25.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 25
2003.2ATAL Exemplo de Particionamento
3 72 1 5 47 34 20 10 9 23i←j
![Page 26: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/26.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 26
2003.2ATAL Exemplo de Particionamento
3 72 1 5 47 34 20 10 9 23i←j
![Page 27: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/27.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 27
2003.2ATAL Exemplo de Particionamento
3 72 1 5 47 34 20 10 9 23ij
![Page 28: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/28.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 28
2003.2ATAL Exemplo de Particionamento
3 72 1 5 47 34 20 10 9 23i ←j
![Page 29: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/29.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 29
2003.2ATAL Exemplo de Particionamento
3 72 1 5 47 34 20 10 9 23
i←j3 72 1 5 47 9 20 10 34 23
![Page 30: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/30.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 30
2003.2ATAL Exemplo de Particionamento
3 72 1 5 47 34 20 10 9 23
i ←j3 72 1 5 47 9 20 10 34 23
![Page 31: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/31.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 31
2003.2ATAL Exemplo de Particionamento
3 72 1 5 47 34 20 10 9 23
i←j
3 72 1 5 47 9 20 10 34 23
3 72 1 5 10 9 20 47 34 23
![Page 32: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/32.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 32
2003.2ATAL Exemplo de Particionamento
3 72 1 5 47 34 20 10 9 23
i←j
3 72 1 5 47 9 20 10 34 23
3 72 1 5 10 9 20 47 34 23
![Page 33: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/33.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 33
2003.2ATAL Exemplo de Particionamento
3 72 1 5 47 34 20 10 9 23
i←j
3 72 1 5 47 9 20 10 34 23
3 72 1 5 10 9 20 47 34 23
![Page 34: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/34.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 34
2003.2ATAL Exemplo de Particionamento
3 72 1 5 47 34 20 10 9 23
i ←j
3 72 1 5 47 9 20 10 34 23
3 72 1 5 10 9 20 47 34 23
![Page 35: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/35.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 35
2003.2ATAL Exemplo de Particionamento
3 72 1 5 47 34 20 10 9 23
i←j
3 72 1 5 47 9 20 10 34 23
3 72 1 5 10 9 20 47 34 23
3 20 1 5 10 9 72 47 34 23
![Page 36: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/36.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 36
2003.2ATAL Exemplo de Particionamento
3 72 1 5 47 34 20 10 9 23
ij
3 72 1 5 47 9 20 10 34 23
3 72 1 5 10 9 20 47 34 23
3 20 1 5 10 9 72 47 34 23
![Page 37: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/37.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 37
2003.2ATAL Exemplo de Particionamento
3 72 1 5 47 34 20 10 9 23
3 72 1 5 47 9 20 10 34 23
3 72 1 5 10 9 20 47 34 23
3 20 1 5 10 9 72 47 34 23
3 20 1 5 10 9 23 47 34 72
![Page 38: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/38.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 38
2003.2ATAL QuickSort - Algoritmo
• A chamada inicial é QuickSort(A, 1, n)
QuickSort(A, inicio, fim)if inicio < fim then
meio ← particiona(A, inicio, fim)QuickSort(A, inicio, meio - 1)QuickSort(A, meio + 1, fim)
![Page 39: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/39.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 39
2003.2ATAL Análise do QuickSort
• Requer a resolução de uma relação de recorrência.
• Como nem sempre os dados são divididos em duas metades de mesmo tamanho:– Melhor caso, pior caso e caso médio podem variar.
• Vamos assumir:– Tempo de partição é O(n).– A posição final do pivô é i.
![Page 40: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/40.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 40
2003.2ATAL Análise do QuickSort
• Melhor caso:– Pivô sempre fica no meio.– T(n) = 2T(n/2) + n– O(n.log n)
T(n) = 1 n = 1T(n) = T(n - i) + T(i – 1) + n nos demais casos
![Page 41: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/41.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 41
2003.2ATAL Análise do QuickSort
• Pior caso:– Pivô sempre fica na primeira ou última posição.– T(n) = T(n - 1) + n– O(n2)
T(n) = 1 n = 1T(n) = T(n - i) + T(i – 1) + n nos demais casos
![Page 42: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/42.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 42
2003.2ATAL Análise do QuickSort
• Caso médio:– Pivô tem a mesma probabilidade 1/n de cair em
uma das n posições.
– Ta(n) = n + 1/n ∑( T
a(i - 1) + T
a(n - i))
– O(n.log n)
T(n) = 1 n = 1T(n) = T(n - i) + T(i – 1) + n nos demais casos
![Page 43: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/43.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 43
2003.2ATAL Ainda sobre QuickSort
• É talvez o algoritmo de ordenação mais usado.
• É fácil de implementar e muito rápido na prática.
• É tipicamente mais do que duas vezes mais rápido do que o MergeSort.
![Page 44: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/44.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 44
2003.2ATAL Ordenação por Comparação
• Todos os algoritmos de ordenação que estudamos até agora utilizam comparação de elementos.
• Em uma ordenação por comparação, a ordem relativa de dois elementos a
i e a
j em
uma seqüência é obtida utilizando testes de comparação:– a
i < a
j, a
i ≤ a
j, a
i = a
j, a
i > a
j e a
i ≥ a
j.
![Page 45: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/45.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 45
2003.2ATAL Ordenação por Comparação
• O melhor algoritmo que vimos para ordenação é O(n.log n).
• É possível encontrar uma melhor solução?• Árvore de decisão pode nos ajudar a
desvendar isso.• É possível usar uma árvore de decisão para
visualizar ordenação por comparação.
![Page 46: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/46.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 46
2003.2ATAL Árvore de Decisão
a1:a3a2:a3
a1:a2
a1:a3 a2:a3<1, 2, 3> <2, 1, 3>
<2, 3, 1><3, 1, 2><1, 3, 2> <3, 2, 1>
≤ >
>
>>
>≤
≤
≤
≤
![Page 47: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/47.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 47
2003.2ATAL Árvore de Decisão
• Sort(<15, 4, 8>)
a1:a3a2:a3
a1:a2
a1:a3 a2:a3<1, 2, 3> <2, 1, 3>
<2, 3, 1><3, 1, 2><1, 3, 2> <3, 2, 1>
≤ 15 > 4
>
>>
>≤
≤
≤
≤
![Page 48: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/48.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 48
2003.2ATAL Árvore de Decisão
• Sort(<15, 4, 8>)
a1:a3a2:a3
a1:a2
a1:a3 a2:a3<1, 2, 3> <2, 1, 3>
<2, 3, 1><3, 1, 2><1, 3, 2> <3, 2, 1>
≤ >
15 > 8
>>
>≤
≤
≤
≤
![Page 49: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/49.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 49
2003.2ATAL Árvore de Decisão
• Sort(<15, 4, 8>)
a1:a3a2:a3
a1:a2
a1:a3 a2:a3<1, 2, 3> <2, 1, 3>
<2, 3, 1><3, 1, 2><1, 3, 2> <3, 2, 1>
≤ >
>
>>
>≤
≤
≤
4 ≤ 8
![Page 50: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/50.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 50
2003.2ATAL Árvore de Decisão
• Sort(<15, 4, 8>) = <4, 8, 15>
a1:a3a2:a3
a1:a2
a1:a3 a2:a3<1, 2, 3> <2, 1, 3>
<2, 3, 1><3, 1, 2><1, 3, 2> <3, 2, 1>
≤ >
>
>>
>≤
≤
≤
≤
![Page 51: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/51.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 51
2003.2ATAL
• As folhas de de uma árvore de decisão indicam uma possível ordenação para os elementos.– O número de permutações possível é n!.
• Para definir um limite inferior:– Uma árvore binária tem no máximo 2d folhas, onde
d é a sua profundidade.– Uma árvore binária com L folhas tem profundidade
de pelo menos log L .
![Page 52: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/52.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 52
2003.2ATAL
• O caminho mais longo da raiz de uma árvore de decisão para qualquer uma de suas folhas representa o pior casodo número de comparações.
• Para n elementos, temos n! folhas:– d = log n! – d ≥ log n!– log n! = Ө(n.log n)– d = Ω(n.log n)
![Page 53: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/53.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 53
2003.2ATAL Ordenação em Tempo
Linear• Nenhuma comparação é efetuada.• Counting Sort:
Counting SortEntrada: Um array de n números A = <a1, a2, ..., an›, em quea
i assume valores 1, 2, ..., k.
Saída: Um array reordenado B = <b1, b2, ..., bn›. Array auxiliar: Um array C = <c1, c2, ..., ck›
![Page 54: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/54.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 54
2003.2ATAL Counting Sort
Counting Sort(A, B, k)for i ← 1 to k do
C[i] ← 0for j ← 1 to length[A] do
C[A[j]] ← C[A[j]] + 1for i ←21 to k do
C[i] ← C[i] + C[i - 1]for j ← length[A] downto 1 do
B[C[A[j]]] ← A[j]C[A[j]] ← C[A[j]] - 1
![Page 55: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/55.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 55
2003.2ATAL Exemplo
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
B:1 2 3 4 5 6 7 8
C:1 2 3 4 5 6
![Page 56: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/56.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 56
2003.2ATAL
• Laço 1
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
B:1 2 3 4 5 6 7 8
0 0 0 0 0 0C:1 2 3 4 5 6
![Page 57: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/57.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 57
2003.2ATAL
• Laço 2
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
B:1 2 3 4 5 6 7 8
0 0 1 0 0 0C:1 2 3 4 5 6
![Page 58: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/58.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 58
2003.2ATAL
• Laço 2
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
B:1 2 3 4 5 6 7 8
0 0 1 0 0 1C:1 2 3 4 5 6
![Page 59: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/59.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 59
2003.2ATAL
• Laço 2
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
B:1 2 3 4 5 6 7 8
0 0 1 1 0 1C:1 2 3 4 5 6
![Page 60: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/60.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 60
2003.2ATAL
• Laço 2
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
B:1 2 3 4 5 6 7 8
1 0 1 1 0 1C:1 2 3 4 5 6
![Page 61: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/61.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 61
2003.2ATAL
• Laço 2
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
B:1 2 3 4 5 6 7 8
1 0 2 1 0 1C:1 2 3 4 5 6
![Page 62: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/62.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 62
2003.2ATAL
• Laço 2
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
B:1 2 3 4 5 6 7 8
1 0 2 2 0 1C:1 2 3 4 5 6
![Page 63: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/63.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 63
2003.2ATAL
• Laço 2
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
B:1 2 3 4 5 6 7 8
2 0 2 2 0 1C:1 2 3 4 5 6
![Page 64: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/64.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 64
2003.2ATAL
• Laço 2
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
B:1 2 3 4 5 6 7 8
2 0 2 3 0 1C:1 2 3 4 5 6
![Page 65: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/65.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 65
2003.2ATAL
• Laço 3
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
B:1 2 3 4 5 6 7 8
2 0 2 3 0 1C:1 2 3 4 5 6
![Page 66: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/66.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 66
2003.2ATAL
• Laço 3
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
B:1 2 3 4 5 6 7 8
2 2 2 3 0 1C:1 2 3 4 5 6
![Page 67: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/67.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 67
2003.2ATAL
• Laço 3
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
B:1 2 3 4 5 6 7 8
2 2 4 3 0 1C:1 2 3 4 5 6
![Page 68: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/68.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 68
2003.2ATAL
• Laço 3
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
B:1 2 3 4 5 6 7 8
2 2 4 7 0 1C:1 2 3 4 5 6
![Page 69: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/69.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 69
2003.2ATAL
• Laço 3
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
B:1 2 3 4 5 6 7 8
2 2 4 7 7 1C:1 2 3 4 5 6
![Page 70: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/70.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 70
2003.2ATAL
• Laço 3
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
B:1 2 3 4 5 6 7 8
2 2 4 7 7 8C:1 2 3 4 5 6
![Page 71: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/71.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 71
2003.2ATAL
• Laço 4
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
B:1 2 3 4 5 6 7 8
2 2 4 7 7 8C:1 2 3 4 5 6
![Page 72: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/72.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 72
2003.2ATAL
• Laço 4
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
4B:1 2 3 4 5 6 7 8
2 2 4 6 7 8C:1 2 3 4 5 6
![Page 73: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/73.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 73
2003.2ATAL
• Laço 4
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
1 4B:1 2 3 4 5 6 7 8
1 2 4 6 7 8C:1 2 3 4 5 6
![Page 74: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/74.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 74
2003.2ATAL
• Laço 4
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
1 4B:1 2 3 4 5 6 7 8
1 2 4 6 7 8C:1 2 3 4 5 6
![Page 75: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/75.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 75
2003.2ATAL
• Laço 4
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
1 4 4B:1 2 3 4 5 6 7 8
1 2 4 5 7 8C:1 2 3 4 5 6
![Page 76: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/76.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 76
2003.2ATAL
• Laço 4
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
1 4 4B:1 2 3 4 5 6 7 8
1 2 4 5 7 8C:1 2 3 4 5 6
![Page 77: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/77.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 77
2003.2ATAL
• Laço 4
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
1 3 4 4B:1 2 3 4 5 6 7 8
1 2 3 5 7 8C:1 2 3 4 5 6
![Page 78: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/78.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 78
2003.2ATAL
• Laço 4
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
1 3 4 4B:1 2 3 4 5 6 7 8
1 2 3 5 7 8C:1 2 3 4 5 6
![Page 79: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/79.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 79
2003.2ATAL
• Laço 4
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
1 1 3 4 4B:1 2 3 4 5 6 7 8
0 2 3 5 7 8C:1 2 3 4 5 6
![Page 80: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/80.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 80
2003.2ATAL
• Laço 4
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
1 1 3 4 4B:1 2 3 4 5 6 7 8
0 2 3 5 7 8C:1 2 3 4 5 6
![Page 81: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/81.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 81
2003.2ATAL
• Laço 4
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
1 1 3 4 4 4B:1 2 3 4 5 6 7 8
0 2 3 4 7 8C:1 2 3 4 5 6
![Page 82: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/82.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 82
2003.2ATAL
• Laço 4
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
1 1 3 4 4 4B:1 2 3 4 5 6 7 8
0 2 3 4 7 8C:1 2 3 4 5 6
![Page 83: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/83.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 83
2003.2ATAL
• Laço 4
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
1 1 3 4 4 4 6B:1 2 3 4 5 6 7 8
0 2 3 4 7 7C:1 2 3 4 5 6
![Page 84: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/84.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 84
2003.2ATAL
• Laço 4
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
1 1 3 4 4 4 6B:1 2 3 4 5 6 7 8
0 2 3 4 7 7C:1 2 3 4 5 6
![Page 85: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/85.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 85
2003.2ATAL
• Laço 4
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
1 1 3 3 4 4 4 6B:1 2 3 4 5 6 7 8
0 2 2 4 7 7C:1 2 3 4 5 6
![Page 86: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/86.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 86
2003.2ATAL
• Laço 4
3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8
1 1 3 3 4 4 4 6B:1 2 3 4 5 6 7 8
0 2 2 4 7 7C:1 2 3 4 5 6
![Page 87: ATAL Análise e Técnicas de](https://reader030.vdocuments.pub/reader030/viewer/2022012414/616e632adb4e78576122f619/html5/thumbnails/87.jpg)
– . ATAL Prof Jorge Figueiredo - Ordenação 87
2003.2ATAL Análise do Counting Sort
• A análise é trivial:– O primeiro e terceiro laços correspondem a O(k).– O segundo e quarto laços são O(n).– O tempo total é, portanto, O(n+k).– Na prática, k = O(n).– Logo, o counting sort é O(n).
• Counting Sort é estável.