A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Ordenação de Dados (V) UFSC-CTC-INE INE5384 - Estruturas de Dados Prof. Ronaldo S. Mello 2002/2.

Apresentações semelhantes


Apresentação em tema: "Ordenação de Dados (V) UFSC-CTC-INE INE5384 - Estruturas de Dados Prof. Ronaldo S. Mello 2002/2."— Transcrição da apresentação:

1 Ordenação de Dados (V) UFSC-CTC-INE INE5384 - Estruturas de Dados Prof. Ronaldo S. Mello 2002/2

2 RadixSort Algoritmo de ordenação por distribuição que ordena com base nos dígitos de um número –prioriza (inicia por) dígitos menos significativos Comparação com o BucketSort –contabiliza também ocorrências de elementos –melhor desempenho médio m não está associado a um valor máximo previsto para um conjunto de elementos e sim ao conjunto de dígitos que podem existir em um número –Sistema decimal: m = 10 (m é pequeno!) o número de iterações do algoritmo depende do número máximo de dígitos (p) que um número pode ter (p é pequeno, em geral)

3 RadixSort Restrições –ordena elementos que possam ser convertidos para uma representação numérica inteira m depende do conjunto de dígitos (m = 10, em geral) –considera que estes elementos não ultrapassam um número de dígitos p Exemplo –ordenação dos 80 empregados da empresa pelo seu tempo de serviço (em anos) n = 80 m = 10 p = 2

4 RadixSort - Funcionamento 9527864145233517 vetor 21301010 76543210 vOcor 1a iteração: p = 1 (dígito menos significativo) 8 9 00 65221100 76543210 vOcor contabiliza os offsets 8 9 88

5 RadixSort - Funcionamento Utiliza dois vetores auxiliares: – vOcor (número de ocorrências de elementos) –vTemp (temporário - mantém a ordenação do vetor por um certo dígito) Realiza p iterações. Na i-ésima iteração: –ordena-se o vetor pelo i-ésimo dígito menos significativo –vOcor recebe o número de ocorrências de cada i-ésimo dígito –uma vez preenchido o vOcor, são contabilizados nele os offsets para cada dígito (posições onde iniciam elementos que possuem um certo valor de dígito) –com base nestes offsets, vTemp recebe os elementos do vetor ordenado pelo i-ésimo dígito –transfere-se os elementos de vTemp para vetor

6 Classe OrdenadorRadixSort SubClasse de Ordenador início m, p inteiro; vOcor, vTemp inteiro[ ]; construtor OrdenadorBucketSort (m inteiro, p inteiro); início this.m  m; this.p  p; vOcor  NOVO inteiro[m]; vTemp  NOVO inteiro[n]; fim;... fim; RadixSort - Implementação

7 RadixSort – Método Ordena 1.Inicializa o vetor de ocorrências (vOcor) com zero 2.Varre o vetor e contabiliza o número de ocorrências de cada elemento em vOcor 3.Ordena o vetor com base no número de ocorrências em vOcor

8 RadixSort – Etapa 1 1.Inicializa o vetor de ocorrências (vOcor) com zero –complexidade: O(m. p) 01234567 00000000 vOcor

9 RadixSort – Etapa 2 2.Varre o vetor e contabiliza o número de ocorrências de cada elemento em vOcor –complexidade: O(n. p) 71351675 vetor 01234567 02010212 vOcor

10 RadixSort – Etapa 3 3.Contabiliza os offsets em vOcor –complexidade: O(m. p) 01234567 02010212 vOcor 11355677 vetor

11 RadixSort – Etapa 4 Transfere os dados de vOcor para vetor –complexidade: O(n. p) 57615317 vetor 21201020 76543210 vOcor

12 RadixSort - Complexidade Complexidades envolvidas: –O(m.p) e O(n.p)  O(p (m + n)) –considerando que m e p são pequenos (m = 10 e p <=10), sua complexidade é assumida como linear no número de dados Complexidade do RadixSort: O(n)

13 Exercícios Implementar para a classe OrdenadorRadixSort: –ordena()


Carregar ppt "Ordenação de Dados (V) UFSC-CTC-INE INE5384 - Estruturas de Dados Prof. Ronaldo S. Mello 2002/2."

Apresentações semelhantes


Anúncios Google