métodos de ordenação: quick, radix, couting, bucket...

85
Ordenação Algoritmos 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

Upload: nguyencong

Post on 20-Jul-2019

221 views

Category:

Documents


0 download

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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