Upload
nguyencong
View
221
Download
0
Embed Size (px)
Citation preview
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Counting Sort – Pseudocódigo
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OrdenaçãoAlgoritmos de Ordenação
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
OrdenaçãoAlgoritmos de Ordenação
Prof. Hebert Coelho e Profa. Nádia Félix Métodos de Ordenação 2
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
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
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
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
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
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