métodos de ordenação: quick, radix, couting, bucket...
TRANSCRIPT
![Page 1: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/1.jpg)
OrdenaçãoAlgoritmos de Ordenação
Métodos de Ordenação:Quick, Radix, Couting, Bucket (Sort)
Hebert Coelho e Nádia Félix
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 2: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/2.jpg)
OrdenaçãoAlgoritmos de Ordenação
Ordenação
É a operação de rearranjar os dados em uma determinadaordem.
Problema da ordenação - Definição formal [1]Entrada: Uma sequência de n números 〈a1,a2, . . . ,an〉.Saída: Uma permutação (reordenada) 〈a′1,a′2, . . . ,a′n〉 dasequência de entrada tal que a′1 ≤ a′2 ≤ . . . ≤ a′n.
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 3: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/3.jpg)
OrdenaçãoAlgoritmos de Ordenação
Ordenação
Na última aula vimos os métodos de ordenação:InsertionSort (n2)SelectionSort (n2)BubbleSort (n2)MergeSort (n ∗ log2n)
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 4: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/4.jpg)
OrdenaçãoAlgoritmos de Ordenação
Ordenação
Nesta aula veremos os métodos de ordenação:QuickSort (pior caso n2)RadixSort (n)CountingSort (n)BucketSort (n)
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 5: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/5.jpg)
OrdenaçãoAlgoritmos de Ordenação
Ordenação
A maioria dos métodos de ordenação é baseado emcomparação de chaves;
Exemplos: insertionsort, selectionsort, BubbleSort,MergeSort, QuickSort;
Existem métodos de ordenação que utilizam o princípio dadistribuição;
Exemplos: radixsort, bucketsort, etc;
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 6: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/6.jpg)
OrdenaçãoAlgoritmos de Ordenação
Ordenação
QuickSort Sort:Counting Sort: Os elementos a serem ordenados sãonúmeros inteiros “pequenos”, isto é, inteiros x ondex ∈ O(n).Radix Sort: Os elementos a serem ordenados sãonúmeros inteiros de comprimento máximo constante, istoé, independente de n.Bucket Sort: Os elementos são números reaisuniformemente distribuídos no intervalo [0 :: 1].
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 7: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/7.jpg)
OrdenaçãoAlgoritmos de Ordenação
Ordenação rápida (QuickSort)
A idéia do QuickSort é:
Dividir: O arranjo A[p..r ] é particionado em doissubarranjos A[p..q − 1] e A[q + 1..r ] tais que cadaelemento de A[p..q − 1] é menor ou igual a A[q] que, porsua vez, é menor ou igual a cada elemento de A[q + 1..r ].O índice q é calculado como parte do procedimento;Conquistar: Os 2 subarranjos A[p..q − 1] e A[q + 1..r ] sãoordenados por chamadas recursivas;Combinar: Os subarranjos são ordenados localmente,então não é necessário combinar;
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 8: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/8.jpg)
OrdenaçãoAlgoritmos de Ordenação
Ordenação rápida (QuickSort)
A idéia do QuickSort é:Dividir: O arranjo A[p..r ] é particionado em doissubarranjos A[p..q − 1] e A[q + 1..r ] tais que cadaelemento de A[p..q − 1] é menor ou igual a A[q] que, porsua vez, é menor ou igual a cada elemento de A[q + 1..r ].O índice q é calculado como parte do procedimento;
Conquistar: Os 2 subarranjos A[p..q − 1] e A[q + 1..r ] sãoordenados por chamadas recursivas;Combinar: Os subarranjos são ordenados localmente,então não é necessário combinar;
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 9: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/9.jpg)
OrdenaçãoAlgoritmos de Ordenação
Ordenação rápida (QuickSort)
A idéia do QuickSort é:Dividir: O arranjo A[p..r ] é particionado em doissubarranjos A[p..q − 1] e A[q + 1..r ] tais que cadaelemento de A[p..q − 1] é menor ou igual a A[q] que, porsua vez, é menor ou igual a cada elemento de A[q + 1..r ].O índice q é calculado como parte do procedimento;Conquistar: Os 2 subarranjos A[p..q − 1] e A[q + 1..r ] sãoordenados por chamadas recursivas;
Combinar: Os subarranjos são ordenados localmente,então não é necessário combinar;
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 10: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/10.jpg)
OrdenaçãoAlgoritmos de Ordenação
Ordenação rápida (QuickSort)
A idéia do QuickSort é:Dividir: O arranjo A[p..r ] é particionado em doissubarranjos A[p..q − 1] e A[q + 1..r ] tais que cadaelemento de A[p..q − 1] é menor ou igual a A[q] que, porsua vez, é menor ou igual a cada elemento de A[q + 1..r ].O índice q é calculado como parte do procedimento;Conquistar: Os 2 subarranjos A[p..q − 1] e A[q + 1..r ] sãoordenados por chamadas recursivas;Combinar: Os subarranjos são ordenados localmente,então não é necessário combinar;
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 11: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/11.jpg)
OrdenaçãoAlgoritmos de Ordenação
Ordenação rápida (QuickSort) - Exemplo
Legenda: pivô; 1a partição: ; 2a partição:
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 1 7 8 3 5 6 4
2 1 3 8 7 5 6 4
2 1 3 8 7 5 6 4
2 1 3 8 7 5 6 4
2 1 3 4 7 5 6 8
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 12: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/12.jpg)
OrdenaçãoAlgoritmos de Ordenação
Ordenação rápida (QuickSort) - Exemplo
Legenda: pivô; 1a partição: ; 2a partição:
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 1 7 8 3 5 6 4
2 1 3 8 7 5 6 4
2 1 3 8 7 5 6 4
2 1 3 8 7 5 6 4
2 1 3 4 7 5 6 8
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 13: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/13.jpg)
OrdenaçãoAlgoritmos de Ordenação
Ordenação rápida (QuickSort) - Exemplo
Legenda: pivô; 1a partição: ; 2a partição:
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 1 7 8 3 5 6 4
2 1 3 8 7 5 6 4
2 1 3 8 7 5 6 4
2 1 3 8 7 5 6 4
2 1 3 4 7 5 6 8
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 14: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/14.jpg)
OrdenaçãoAlgoritmos de Ordenação
Ordenação rápida (QuickSort) - Exemplo
Legenda: pivô; 1a partição: ; 2a partição:
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 1 7 8 3 5 6 4
2 1 3 8 7 5 6 4
2 1 3 8 7 5 6 4
2 1 3 8 7 5 6 4
2 1 3 4 7 5 6 8
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 15: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/15.jpg)
OrdenaçãoAlgoritmos de Ordenação
Ordenação rápida (QuickSort) - Exemplo
Legenda: pivô; 1a partição: ; 2a partição:
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 1 7 8 3 5 6 4
2 1 3 8 7 5 6 4
2 1 3 8 7 5 6 4
2 1 3 8 7 5 6 4
2 1 3 4 7 5 6 8
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 16: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/16.jpg)
OrdenaçãoAlgoritmos de Ordenação
Ordenação rápida (QuickSort) - Exemplo
Legenda: pivô; 1a partição: ; 2a partição:
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 1 7 8 3 5 6 4
2 1 3 8 7 5 6 4
2 1 3 8 7 5 6 4
2 1 3 8 7 5 6 4
2 1 3 4 7 5 6 8
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 17: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/17.jpg)
OrdenaçãoAlgoritmos de Ordenação
Ordenação rápida (QuickSort) - Exemplo
Legenda: pivô; 1a partição: ; 2a partição:
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 1 7 8 3 5 6 4
2 1 3 8 7 5 6 4
2 1 3 8 7 5 6 4
2 1 3 8 7 5 6 4
2 1 3 4 7 5 6 8
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 18: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/18.jpg)
OrdenaçãoAlgoritmos de Ordenação
Ordenação rápida (QuickSort) - Exemplo
Legenda: pivô; 1a partição: ; 2a partição:
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 1 7 8 3 5 6 4
2 1 3 8 7 5 6 4
2 1 3 8 7 5 6 4
2 1 3 8 7 5 6 4
2 1 3 4 7 5 6 8
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 19: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/19.jpg)
OrdenaçãoAlgoritmos de Ordenação
Ordenação rápida (QuickSort) - Exemplo
Legenda: pivô; 1a partição: ; 2a partição:
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 1 7 8 3 5 6 4
2 1 3 8 7 5 6 4
2 1 3 8 7 5 6 4
2 1 3 8 7 5 6 4
2 1 3 4 7 5 6 8
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 20: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/20.jpg)
OrdenaçãoAlgoritmos de Ordenação
Ordenação rápida (QuickSort) - Exemplo
Legenda: pivô; 1a partição: ; 2a partição:
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 8 7 1 3 5 6 4
2 1 7 8 3 5 6 4
2 1 3 8 7 5 6 4
2 1 3 8 7 5 6 4
2 1 3 8 7 5 6 4
2 1 3 4 7 5 6 8
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 21: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/21.jpg)
OrdenaçãoAlgoritmos de Ordenação
Ordenação rápida (QuickSort) - Exemplo
Legenda: pivô; 1a partição: ; 2a partição:
2 1 3 4 7 5 6 8
Todos elementos da 1a partição são menores ou iguais aopivôTodos elementos da 2a partição são maiores que o pivô
Intercultural Computer Science Educationhttps://www.youtube.com/watch?v=ywWBy6J5gz8
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 22: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/22.jpg)
OrdenaçãoAlgoritmos de Ordenação
Ordenação rápida (QuickSort) - Exemplo
Legenda: pivô; 1a partição: ; 2a partição:
2 1 3 4 7 5 6 8
Todos elementos da 1a partição são menores ou iguais aopivôTodos elementos da 2a partição são maiores que o pivô
Intercultural Computer Science Educationhttps://www.youtube.com/watch?v=ywWBy6J5gz8
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 23: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/23.jpg)
OrdenaçãoAlgoritmos de Ordenação
Ordenação rápida (QuickSort) - código em C
1 void QuickSort(int∗ A, int p, int r){2 if (p < r) {3 int q = partition(A, p, r);4 QuickSort(A, p, q−1);5 QuickSort(A, q+1, r); }}
1 int partition (int ∗A, int p, int r){2 int aux, pivo = A[r], i = p−1;3 for (int j = p; j <= r − 1; j++) {4 if (A[j] <= pivo) {5 i = i + 1;6 aux = A[i];7 A[i] = A[j];8 A[j] = aux;}9 }
10 aux = A[i+1];11 A[i+1] = A[r];12 A[r] = aux;13 return i + 1;}
Chamada externa: QuickSort (A, 1, n); n é o tamanho do vetor.
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 24: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/24.jpg)
OrdenaçãoAlgoritmos de Ordenação
Ordenação rápida (QuickSort) - Exercícios
1 Um algoritmo de ordenação é estável se preserva ordemrelativa de itens com valores idênticos. Responda:quicksort é estável? Exemplifique.
2 Modifique o quicksort para fazer ordenação decrescente.3 Que valor de q partição() retorna quando todos os
elementos no arranjo A[p..r ] têm o mesmo valor?Modifique partição() de forma que q = (p + r)/2 quandotodos os elementos no arranjo A[p..r ] têm o mesmo valor.
4 Qual o melhor caso do quicksort? Qual seu custo nestecaso?
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 25: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/25.jpg)
OrdenaçãoAlgoritmos de Ordenação
Ordenação rápida (QuickSort) - Exercícios
1 Um algoritmo de ordenação é estável se preserva ordemrelativa de itens com valores idênticos. Responda:quicksort é estável? Exemplifique.
2 Modifique o quicksort para fazer ordenação decrescente.
3 Que valor de q partição() retorna quando todos oselementos no arranjo A[p..r ] têm o mesmo valor?Modifique partição() de forma que q = (p + r)/2 quandotodos os elementos no arranjo A[p..r ] têm o mesmo valor.
4 Qual o melhor caso do quicksort? Qual seu custo nestecaso?
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 26: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/26.jpg)
OrdenaçãoAlgoritmos de Ordenação
Ordenação rápida (QuickSort) - Exercícios
1 Um algoritmo de ordenação é estável se preserva ordemrelativa de itens com valores idênticos. Responda:quicksort é estável? Exemplifique.
2 Modifique o quicksort para fazer ordenação decrescente.
3 Que valor de q partição() retorna quando todos oselementos no arranjo A[p..r ] têm o mesmo valor?Modifique partição() de forma que q = (p + r)/2 quandotodos os elementos no arranjo A[p..r ] têm o mesmo valor.
4 Qual o melhor caso do quicksort? Qual seu custo nestecaso?
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 27: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/27.jpg)
OrdenaçãoAlgoritmos de Ordenação
Ordenação rápida (QuickSort) - Exercícios
1 Um algoritmo de ordenação é estável se preserva ordemrelativa de itens com valores idênticos. Responda:quicksort é estável? Exemplifique.
2 Modifique o quicksort para fazer ordenação decrescente.3 Que valor de q partição() retorna quando todos os
elementos no arranjo A[p..r ] têm o mesmo valor?Modifique partição() de forma que q = (p + r)/2 quandotodos os elementos no arranjo A[p..r ] têm o mesmo valor.
4 Qual o melhor caso do quicksort? Qual seu custo nestecaso?
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 28: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/28.jpg)
OrdenaçãoAlgoritmos de Ordenação
Ordenação rápida (QuickSort) - Exercícios
1 Um algoritmo de ordenação é estável se preserva ordemrelativa de itens com valores idênticos. Responda:quicksort é estável? Exemplifique.
2 Modifique o quicksort para fazer ordenação decrescente.3 Que valor de q partição() retorna quando todos os
elementos no arranjo A[p..r ] têm o mesmo valor?Modifique partição() de forma que q = (p + r)/2 quandotodos os elementos no arranjo A[p..r ] têm o mesmo valor.
4 Qual o melhor caso do quicksort? Qual seu custo nestecaso?
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 29: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/29.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Considere o problema de ordenar um vetor A [1 . . . n] deinteiros quando se sabe que todos os inteiros estão nointervalo entre 0 e k .O algoritmo Counting Sort ordena o vetor contando, paracada inteiro i no vetor, quantos elementos do vetor sãomenores que i .O algoritmo Counting Sort ordena estes n números emtempo O(n + k) (equivalente a O(n)).O algoritmo usa dois vetores auxiliares:
C de tamanho k que guarda em C [i] o número deocorrências de elementos i em A.B de tamanho n onde se constrói o vetor ordenado
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 30: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/30.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 31: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/31.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 32: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/32.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 33: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/33.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 34: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/34.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 35: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/35.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 36: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/36.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 37: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/37.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 38: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/38.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 39: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/39.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 40: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/40.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 41: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/41.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 42: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/42.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 43: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/43.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 44: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/44.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 45: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/45.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 46: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/46.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 47: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/47.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 48: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/48.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 49: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/49.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 50: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/50.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 51: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/51.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 52: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/52.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 53: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/53.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 54: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/54.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 55: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/55.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 56: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/56.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 57: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/57.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 58: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/58.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 59: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/59.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 60: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/60.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 61: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/61.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 62: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/62.jpg)
OrdenaçãoAlgoritmos de Ordenação
Counting Sort – Pseudocódigo
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 63: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/63.jpg)
OrdenaçãoAlgoritmos de Ordenação
Algorithm 1 Counting-Sort(A,B,n,k)1: for i = 0 to k do2: C[i] = 0;3: end for4: for j = 1 to n do5: C[A[j]] = C[A[j]]+1; {C[i] é o número de j’s tais que A[j]=i}6: end for7: for i = 1 to k do8: C[i] = C[i]+C[i−1]; {C[i] é número de j’s tais que A[j] ≤ i}9: end for
10: for i = n decrescendo até 1 do11: B[C[A[j]]] = A[j];12: C[A[j]] = C[A[j]]− 1;13: end for
Obs: são feitas 0 comparações entre elementos do vetor.Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 64: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/64.jpg)
OrdenaçãoAlgoritmos de Ordenação
Radix Sort
Considere agora o problema de ordenar um vetorA [1 . . . n] inteiros quando se sabe que todos os inteirospodem ser representados com apenas d dígitos, onde d éuma constante.Por exemplo, os elementos de A podem ser CEPs, ouseja, inteiros de 8 dígitos.
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 65: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/65.jpg)
OrdenaçãoAlgoritmos de Ordenação
Radix Sort
Considere agora o problema de ordenar um vetorA [1 . . . n] inteiros quando se sabe que todos os inteirospodem ser representados com apenas d dígitos, onde d éuma constante.Por exemplo, os elementos de A podem ser CEPs, ouseja, inteiros de 8 dígitos.
dígito 1: menos significativodígito d: mais significativo
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 66: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/66.jpg)
OrdenaçãoAlgoritmos de Ordenação
Radix Sort
Algorithm 2 Radix-Sort(A,n,d)1: for i = 1 to d do2: ORDENE(A,n, i);3: end for
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 67: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/67.jpg)
OrdenaçãoAlgoritmos de Ordenação
Radix Sort – Pseudocódigo
Algorithm 3 Radix-Sort(A,n,d)1: for i = 1 to d do2: ORDENE(A,n, i);3: end for
ORDENE(A,n, i): Ordena A [1 . . . n] pelo i-ésimo dígito dosnúmeros em A por meio de um algoritmo estável.
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 68: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/68.jpg)
OrdenaçãoAlgoritmos de Ordenação
Consumo de tempo do Radix Sort
Depende do algoritmo ORDENE.
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 69: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/69.jpg)
OrdenaçãoAlgoritmos de Ordenação
Consumo de tempo do Radix Sort
Depende do algoritmo ORDENE.Se cada dígito é um inteiro de 1 a k, então podemos usar oCOUNTING SORT.
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 70: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/70.jpg)
OrdenaçãoAlgoritmos de Ordenação
Consumo de tempo do Radix Sort
Depende do algoritmo ORDENE.Se cada dígito é um inteiro de 1 a k, então podemos usar oCOUNTING SORT.Neste caso, o consumo de tempo é O(d(k + n)).
Se d é limitado por uma constante (ou seja, se d = O(1)) ek = O(n), então o consumo de tempo é O(n).
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 71: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/71.jpg)
OrdenaçãoAlgoritmos de Ordenação
Bucket Sort
Supõe que os n elementos da entrada estão distribuídosuniformemente no intervalo [0,1).A ideia é dividir o intervalo [0,1) em n segmentos demesmo tamanho ( buckets) e distribuir os n elementos nosseus respectivos segmentos. Como os elementos estãodistribuídos uniformemente, espera-se que o número deelementos seja aproximadamente o mesmo em todos ossegmentos.Em seguida, os elementos de cada segmento sãoordenados por um método qualquer. Finalmente, ossegmentos ordenados são concatenados em ordemcrescente.
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 72: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/72.jpg)
OrdenaçãoAlgoritmos de Ordenação
Bucket Sort - Idéia Geral
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 73: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/73.jpg)
OrdenaçãoAlgoritmos de Ordenação
Bucket Sort - Idéia Geral
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 74: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/74.jpg)
OrdenaçãoAlgoritmos de Ordenação
Bucket Sort - Idéia Geral
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 75: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/75.jpg)
OrdenaçãoAlgoritmos de Ordenação
Bucket Sort - Idéia Geral
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 76: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/76.jpg)
OrdenaçãoAlgoritmos de Ordenação
Bucket Sort - Idéia Geral
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 77: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/77.jpg)
OrdenaçãoAlgoritmos de Ordenação
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 78: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/78.jpg)
OrdenaçãoAlgoritmos de Ordenação
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 79: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/79.jpg)
OrdenaçãoAlgoritmos de Ordenação
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 80: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/80.jpg)
OrdenaçãoAlgoritmos de Ordenação
Bucket Sort – Pseudocódigo
Algorithm 4 Bucket-Sort(A,n)1: for i = 0 to n − 1 do2: B[i] = NULL;3: end for4: for i = 1 to n do5: INSIRA(B[bnA[i]c],A[i]);6: end for7: for i = 0 to n − 1 do8: ORDENE(B[i]);9: end for
10: C = CONCATENE(B,n);11: devolva C;
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 81: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/81.jpg)
OrdenaçãoAlgoritmos de Ordenação
Bucket Sort – Pseudocódigo
INSIRA(p, x): insere x na lista apontada por pORDENE(p) : ordena a lista apontada por pCONCATENE(B,n) : devolve a lista obtida daconcatenação das listas apontadas por B [i] , . . . ,B [n − 1].
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 82: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/82.jpg)
OrdenaçãoAlgoritmos de Ordenação
Bucket Sort – Consumo de tempo
Suponha que os números em A [1 . . . n] sãouniformemente distribuídos no intervalo [0,1) .Suponha que o ORDENE seja o INSERTIONSORT.
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 83: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/83.jpg)
OrdenaçãoAlgoritmos de Ordenação
Bucket Sort – Consumo de tempo
Suponha que os números em A [1 . . . n] sãouniformemente distribuídos no intervalo [0,1) .Suponha que o ORDENE seja o INSERTIONSORT.
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 84: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/84.jpg)
OrdenaçãoAlgoritmos de Ordenação
Exercícios
1 Implementar os algoritmos Counting Sort, Radix Sort eBucket Sort, realizando experimentos que avaliem aquantidade de operações (comparações) e o tempo deexecução para:
1 10 vetores com 1.000, 10.000, 100.000 e um milhão denúmeros inteiros entre 0 e 99.999 (totalizando 40execuções).
2 Comparar estes algoritmos com o QuickSort para osmesmos vetores.
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
![Page 85: Métodos de Ordenação: Quick, Radix, Couting, Bucket (Sort)hebert/disc/aed1/AED1_05_ordenacao2.pdf · Ordenação Algoritmos de Ordenação Métodos de Ordenação: Quick, Radix,](https://reader031.vdocument.in/reader031/viewer/2022022119/5d32279c88c9939a158cf75d/html5/thumbnails/85.jpg)
OrdenaçãoAlgoritmos de Ordenação
Bibliografia
CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L. e STEIN, C.Introduction to Algorithms, 3a edição, MIT Press, 2009.
ZIVIANI, N. Projeto de Algoritmos: com implementações em Pascal eC, 2a edição, Cengage Learning, 2009.
Slides dos professores Humberto Longo, Márcia Cappelle, MarceloQuinta e Marcos Roriz
wikipedia.
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2