SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
UNIVERSIDADE LUTERANA DO BRASIL
   COMUNIDADE EVANGÉLICA LUTERANA “SÃO PAULO”
Reconhecida pela Portaria Ministerial nº 681 de 07/12/89 – DOU de 11/12/89
                            Campus Torres



    Ordenação de Dados por
     Distribuição de Chaves
                 Estrutura de Dados II
               Igor Casa Nova dos Santos
                  Uílson Zanetti Gomes
               Mauricio Volkweis Astiazara
                    Henrique Oliveira

            Professor Leonardo Pereira
                    Torres, Abril de 2002
Sumário
s   Introdução
s   1 Origem
s   2 Base
    – 2.1 Princípio da Limitação de Dígitos
    – 2.2 Princípio do Valor pela Posição
    – 2.3 Aplicando os Dois Princípios
s   3 Algoritmo
    – 3.1 Código
    – 3.2 Aplicação
s   4 Vantagens e Desvantagens
s   Conclusão
                                              2
Introdução
s   Existem diversos algoritmos utilizados para a
    ordenação de dados
s   Cada um apresenta características
    específicas, com vantagens e desvantagens
s   Veremos um destes algoritmos: ordenação
    de dados por distribuição de chaves




                                                    3
1 Origem
s   Também conhecido como Radixsort,
    Algoritmo das Raízes e Indexação Direta
s   Criado para máquinas de ordenação de
    cartões perfurados
s   Resistiu ao tempo e foi utilizado em
    computadores digitais




                                              4
2 Base
s   Diferente dos outros métodos de ordenação
    que usam comparação e troca
s   Se baseia em duas características do
    sistema numérico arábico:
    – Princípio da Limitação de Dígitos
    – Princípio do Valor pela Posição




                                                5
2.1 Princípio da Limitação de Dígitos
s   O número de dígitos (caracteres) usados
    numa base numérica é limitado
s   A quantidade de números que podem
    representar quando combinados é infinita
  Base Numérica                Dígitos (Caracteres)
Decimal           0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Binária           0, 1
Hexadecimal       0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F




                                                                   6
2.1 Princípio da Limitação de Dígitos
s   O algoritmo já “conhece” a ordem correta dos
    dígitos da base numérica (decimal)
s   Logo, pode ordenar um vetor com dados de
    no máximo um dígito




                                               7
2.2 Princípio do Valor pela Posição
s   O valor de cada dígito muda de acordo com a
    posição em que ocupa no número
s   Exemplos:
    Base                       Valor do Dígito na Posição
                     N                   3             2            1
                       (N – 1)                2             1
B           Dígito * B             Dígito * B    Dígito * B     Dígito * 1
                        (N – 1)
Decimal     Dígito * 10            Dígito * 100 Dígito * 10     Dígito * 1
                      (N – 1)
Binária     Dígito * 2             Dígito * 4    Dígito * 2     Dígito * 1
                        (N – 1)
Hexadecimal Dígito * 16            Dígito * 256 Dígito * 16     Dígito * 1

s   Logo, qualquer dígito à direita representa
    mais que qualquer dígito à esquerda

                                                                        8
2.3 Aplicando os Dois Princípios
s   Inicia-se ordenando os dados pelo dígito da
    posição 1 (menos significativo)
s   Para essa ordenação é usado um algoritmo
    baseado no Princípio da Limitação de Dígitos
s   Passa-se então para a ordenação pelo dígito
    da posição 2, depois 3 e assim por diante,
    até o número máximo de dígitos que os
    dados podem ter


                                               9
3 Algoritmo
s   Um exemplo de algoritmo em português
    estruturado e a sua aplicação sobre um vetor
    exemplo
s   3.1 Código
Programa Principal:
Início
  Para cada posição começando pela 1 até
  a máxima que as chaves podem ter {
     Ordenar o vetor pelo dígito dessa
     posição;
  }
                                               10
Fim.
3.1 Código
Subrotina
Ordenar Vetor pelo Dígito da Posição X:
Início
  Criar um vetor chamado Fila, da posição
  0 até a 9, de filas;
  Para cada elemento do Vetor {
     F = Obter o dígito desse elemento na
     Posição X;
     Colocar esse elemento na Fila F;
  }

                                        11
3.1 Código
  A Posição Atual do Vetor é o início;
  Para Y = 0 até 9 {
     Colocar cada elemento da Fila[Y] no
     Vetor a partir da Posição Atual;
     A Posição Atual do Vetor é o seu
     próprio valor somado ao tamanho da
          Fila[Y];
  }
Fim;



                                           12
3.2 Aplicação
s   Vetor exemplo a ser ordenado:
            Posição    Dado (Chave)
           1          15
           2          2
           3          21
           4          11
           5          8
           6          1
           7          30
           8          9
           9          10
           10         6               13
3.2 Aplicação
s   Passo 1:
Programa Principal:
Início
  Para cada posição começando pela 1 até
  a máxima que as chaves podem ter {
     Ordenar o vetor pelo dígito dessa
     posição;
  }




                                           14
3.2 Aplicação
s   Passo 2:
Subrotina
Ordenar Vetor pelo Dígito da Posição X:
Início
  Criar um vetor chamado Fila, da posição
  0 até a 9, de filas;




                                        15
3.2 Aplicação
s   O Vetor de filas “Fila” criado:
            Fila       Elementos
            0
            1
            2
            3
            4
            5
            6
            7
            8
            9                         16
3.2 Aplicação
s   Passo 3:
    Para cada elemento do Vetor {
       F = Obter o dígito desse elemento na
       Posição X;
       Colocar esse elemento na Fila F;
    }




                                          17
3.2 Aplicação
s   Ao fim do laço:
           Fila        Elementos
           0      30, 10
           1      21, 11, 1
           2      2
           3
           4
           5      15
           6      6
           7
           8      8
           9      9                18
3.2 Aplicação
s   Passo 4:
  Para Y = 0 até 9 {
     Colocar cada elemento da Fila[Y] no
     Vetor a partir da Posição Atual;
     A Posição Atual do Vetor é o seu
     próprio valor somado ao tamanho da
          Fila[Y];
  }
Fim;



                                           19
3.2 Aplicação
s   Vetor ordenado pelas unidades:
            Posição    Dado (Chave)
           1          30
           2          10
           3          21
           4          11
           5          1
           6          2
           7          15
           8          6
           9          8
           10         9               20
3.2 Aplicação
s   Passo 5:
    – Com o fim da subrotina de ordenação por dígito,
      volta-se ao programa principal e é encerrada a
      primeira volta do laço descrito no Passo 1
    – Segue-se o que foi descrito nos Passos 2 e 3,
      mas com o parâmetro da rotina de ordenação por
      dígito 2




                                                    21
3.2 Aplicação
s   Vetor ordenado pelas unidades e dezenas:
           Fila         Elementos
           0      1, 2, 6, 8, 9
           1      10, 11, 15
           2      21
           3      30
           4
           5
           6
           7
           8
           9                                   22
3.2 Aplicação
s   Passo 6:
    – É repetido o processo do passo 4, que forma o
      vetor novamente a partir das filas
    – É o fim da subrotina e volta-se ao programa
      principal
    – Como foi atingido o número máximo de dígitos (2)
      é o fim do laço e do programa




                                                     23
3.2 Aplicação
s   Vetor ordenado ao fim do programa:
            Posição    Dado (Chave)
           1          1
           2          2
           3          6
           4          8
           5          9
           6          10
           7          11
           8          15
           9          21
           10         30                 24
4 Vantagens e Desvantagens
s   Utiliza pouco processamento (comparações)
    em relação aos outros algoritmos
s   Rápido para dados com poucos dígitos
s   É necessário saber de antemão o número
    máximo de dígitos dos dados
s   Os passos intermediários, como a separação
    do dado em dígitos, podem usar mais
    processamento que a própria ordenação.


                                                25
Conclusão
s   Deve ser utilizado em situações específicas,
    como por exemplo:
    – Quando se sabe o antecipadamente o tamanho
      máximo dos dados
    – Quando o número de dígitos dos dados não é
      muito grande
s   Se usado em situações genéricas a eficiência
    pode não corresponder ao desejado



                                                   26

Mais conteúdo relacionado

Mais procurados

Analise de sinais apostila
Analise de sinais apostilaAnalise de sinais apostila
Analise de sinais apostilaSandro Sena
 
Introdução ao Octave
Introdução ao OctaveIntrodução ao Octave
Introdução ao OctavePeslPinguim
 
Tutorial Octave Matlab
Tutorial Octave MatlabTutorial Octave Matlab
Tutorial Octave Matlabblogmaxima
 
Course in GNU Octave / Matlab and Applications for Engineers (in Portuguese: ...
Course in GNU Octave / Matlab and Applications for Engineers (in Portuguese: ...Course in GNU Octave / Matlab and Applications for Engineers (in Portuguese: ...
Course in GNU Octave / Matlab and Applications for Engineers (in Portuguese: ...Tiago Oliveira Weber
 
Sistemas digitais - Sistemas de Numeração
Sistemas digitais - Sistemas de NumeraçãoSistemas digitais - Sistemas de Numeração
Sistemas digitais - Sistemas de NumeraçãoCarlos Pereira
 
Minicurso Matlab IVSEE 2013 UERJ
Minicurso Matlab IVSEE 2013 UERJMinicurso Matlab IVSEE 2013 UERJ
Minicurso Matlab IVSEE 2013 UERJRenan Prata
 
T aula2-revisões bases e ip
T aula2-revisões bases e ipT aula2-revisões bases e ip
T aula2-revisões bases e ipHélio Martins
 
Ordenação de vetores
Ordenação de vetoresOrdenação de vetores
Ordenação de vetoresalfredtaddeus
 

Mais procurados (13)

Analise de sinais apostila
Analise de sinais apostilaAnalise de sinais apostila
Analise de sinais apostila
 
Introdução ao Octave
Introdução ao OctaveIntrodução ao Octave
Introdução ao Octave
 
Tutorial Octave Matlab
Tutorial Octave MatlabTutorial Octave Matlab
Tutorial Octave Matlab
 
Course in GNU Octave / Matlab and Applications for Engineers (in Portuguese: ...
Course in GNU Octave / Matlab and Applications for Engineers (in Portuguese: ...Course in GNU Octave / Matlab and Applications for Engineers (in Portuguese: ...
Course in GNU Octave / Matlab and Applications for Engineers (in Portuguese: ...
 
Lab4 mux
Lab4 muxLab4 mux
Lab4 mux
 
Sistemas digitais - Sistemas de Numeração
Sistemas digitais - Sistemas de NumeraçãoSistemas digitais - Sistemas de Numeração
Sistemas digitais - Sistemas de Numeração
 
Introdução metodos computacionais
Introdução metodos computacionaisIntrodução metodos computacionais
Introdução metodos computacionais
 
Painel 13
Painel 13Painel 13
Painel 13
 
Minicurso Matlab IVSEE 2013 UERJ
Minicurso Matlab IVSEE 2013 UERJMinicurso Matlab IVSEE 2013 UERJ
Minicurso Matlab IVSEE 2013 UERJ
 
Classificação de Documentos
Classificação de DocumentosClassificação de Documentos
Classificação de Documentos
 
T aula2-revisões bases e ip
T aula2-revisões bases e ipT aula2-revisões bases e ip
T aula2-revisões bases e ip
 
Ordenação de vetores
Ordenação de vetoresOrdenação de vetores
Ordenação de vetores
 
15444311 tutorial-mat lab
15444311 tutorial-mat lab15444311 tutorial-mat lab
15444311 tutorial-mat lab
 

Destaque

Tutorial aed iii 001 - algoritmo de ordenação shellsort
Tutorial aed iii   001 - algoritmo de ordenação shellsortTutorial aed iii   001 - algoritmo de ordenação shellsort
Tutorial aed iii 001 - algoritmo de ordenação shellsortFlávio Freitas
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmosRicardo Bolanho
 
Semana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetoresSemana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetoresPedro Valente
 
Metodo de Ordenação Selection sort
Metodo de Ordenação Selection sortMetodo de Ordenação Selection sort
Metodo de Ordenação Selection sortLeno Oliveira
 
Análise de Algoritmos - Análise Assintótica
Análise de Algoritmos - Análise AssintóticaAnálise de Algoritmos - Análise Assintótica
Análise de Algoritmos - Análise AssintóticaDelacyr Ferreira
 
Análise de Algoritmos - Problemas, instâncias, algoritmos e tempo
Análise de Algoritmos - Problemas, instâncias, algoritmos e tempoAnálise de Algoritmos - Problemas, instâncias, algoritmos e tempo
Análise de Algoritmos - Problemas, instâncias, algoritmos e tempoDelacyr Ferreira
 
Análise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NPAnálise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NPDelacyr Ferreira
 
Análise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeAnálise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeDelacyr Ferreira
 
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...Universidade de São Paulo
 

Destaque (15)

Tutorial aed iii 001 - algoritmo de ordenação shellsort
Tutorial aed iii   001 - algoritmo de ordenação shellsortTutorial aed iii   001 - algoritmo de ordenação shellsort
Tutorial aed iii 001 - algoritmo de ordenação shellsort
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmos
 
7 slides
7 slides7 slides
7 slides
 
Semana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetoresSemana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetores
 
Analise Algoritmos
Analise AlgoritmosAnalise Algoritmos
Analise Algoritmos
 
Metodo de Ordenação Selection sort
Metodo de Ordenação Selection sortMetodo de Ordenação Selection sort
Metodo de Ordenação Selection sort
 
Ordenação por inserção
Ordenação por inserçãoOrdenação por inserção
Ordenação por inserção
 
Análise de Algoritmos - Análise Assintótica
Análise de Algoritmos - Análise AssintóticaAnálise de Algoritmos - Análise Assintótica
Análise de Algoritmos - Análise Assintótica
 
Algoritmos de busca
Algoritmos de buscaAlgoritmos de busca
Algoritmos de busca
 
Análise de Algoritmos - Problemas, instâncias, algoritmos e tempo
Análise de Algoritmos - Problemas, instâncias, algoritmos e tempoAnálise de Algoritmos - Problemas, instâncias, algoritmos e tempo
Análise de Algoritmos - Problemas, instâncias, algoritmos e tempo
 
Análise de Algoritmos
Análise de AlgoritmosAnálise de Algoritmos
Análise de Algoritmos
 
Análise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NPAnálise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NP
 
Análise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeAnálise de Algoritmos - Recursividade
Análise de Algoritmos - Recursividade
 
Ordenação
OrdenaçãoOrdenação
Ordenação
 
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
 

Mais de Mauricio Volkweis Astiazara

Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...Mauricio Volkweis Astiazara
 
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...Mauricio Volkweis Astiazara
 
Comparação de Algoritmos Baseados em Q-Learning
Comparação de Algoritmos Baseados em Q-LearningComparação de Algoritmos Baseados em Q-Learning
Comparação de Algoritmos Baseados em Q-LearningMauricio Volkweis Astiazara
 
Sistema de Recomendação de Páginas sobre Saúde
Sistema de Recomendação de Páginas sobre SaúdeSistema de Recomendação de Páginas sobre Saúde
Sistema de Recomendação de Páginas sobre SaúdeMauricio Volkweis Astiazara
 
Sistema de Recomendação de Páginas sobre Saúde
Sistema de Recomendação de Páginas sobre SaúdeSistema de Recomendação de Páginas sobre Saúde
Sistema de Recomendação de Páginas sobre SaúdeMauricio Volkweis Astiazara
 

Mais de Mauricio Volkweis Astiazara (20)

Como Programar Melhor em Java
Como Programar Melhor em JavaComo Programar Melhor em Java
Como Programar Melhor em Java
 
Sistemas Imunológicos Artificiais
Sistemas Imunológicos ArtificiaisSistemas Imunológicos Artificiais
Sistemas Imunológicos Artificiais
 
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
 
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
Sistema Imunológico Artificial para Predição de Fraudes e Furtos de Energia E...
 
Comparação de Algoritmos Baseados em Q-Learning
Comparação de Algoritmos Baseados em Q-LearningComparação de Algoritmos Baseados em Q-Learning
Comparação de Algoritmos Baseados em Q-Learning
 
Classificador de Documentos Naïve Bayes
Classificador de Documentos Naïve BayesClassificador de Documentos Naïve Bayes
Classificador de Documentos Naïve Bayes
 
Visão Computacional
Visão ComputacionalVisão Computacional
Visão Computacional
 
Sistema de Recomendação de Páginas sobre Saúde
Sistema de Recomendação de Páginas sobre SaúdeSistema de Recomendação de Páginas sobre Saúde
Sistema de Recomendação de Páginas sobre Saúde
 
Sistema de Recomendação de Páginas sobre Saúde
Sistema de Recomendação de Páginas sobre SaúdeSistema de Recomendação de Páginas sobre Saúde
Sistema de Recomendação de Páginas sobre Saúde
 
Processamento de Imagens
Processamento de ImagensProcessamento de Imagens
Processamento de Imagens
 
Percepção, Movimento e Ação
Percepção, Movimento e AçãoPercepção, Movimento e Ação
Percepção, Movimento e Ação
 
Memória e Aprendizagem
Memória e AprendizagemMemória e Aprendizagem
Memória e Aprendizagem
 
Gerência de Requisitos
Gerência de RequisitosGerência de Requisitos
Gerência de Requisitos
 
Testes de Sistema
Testes de SistemaTestes de Sistema
Testes de Sistema
 
Telefonia Móvel
Telefonia MóvelTelefonia Móvel
Telefonia Móvel
 
Telefonia Móvel
Telefonia MóvelTelefonia Móvel
Telefonia Móvel
 
Realidade Virtual
Realidade VirtualRealidade Virtual
Realidade Virtual
 
Protótipo de Simulador de Elevadores
Protótipo de Simulador de ElevadoresProtótipo de Simulador de Elevadores
Protótipo de Simulador de Elevadores
 
Protótipo de Simulador de Elevadores
Protótipo de Simulador de ElevadoresProtótipo de Simulador de Elevadores
Protótipo de Simulador de Elevadores
 
Planejamento de Informática
Planejamento de InformáticaPlanejamento de Informática
Planejamento de Informática
 

Ordenação de dados por distribuição de chaves

  • 1. UNIVERSIDADE LUTERANA DO BRASIL COMUNIDADE EVANGÉLICA LUTERANA “SÃO PAULO” Reconhecida pela Portaria Ministerial nº 681 de 07/12/89 – DOU de 11/12/89 Campus Torres Ordenação de Dados por Distribuição de Chaves Estrutura de Dados II Igor Casa Nova dos Santos Uílson Zanetti Gomes Mauricio Volkweis Astiazara Henrique Oliveira Professor Leonardo Pereira Torres, Abril de 2002
  • 2. Sumário s Introdução s 1 Origem s 2 Base – 2.1 Princípio da Limitação de Dígitos – 2.2 Princípio do Valor pela Posição – 2.3 Aplicando os Dois Princípios s 3 Algoritmo – 3.1 Código – 3.2 Aplicação s 4 Vantagens e Desvantagens s Conclusão 2
  • 3. Introdução s Existem diversos algoritmos utilizados para a ordenação de dados s Cada um apresenta características específicas, com vantagens e desvantagens s Veremos um destes algoritmos: ordenação de dados por distribuição de chaves 3
  • 4. 1 Origem s Também conhecido como Radixsort, Algoritmo das Raízes e Indexação Direta s Criado para máquinas de ordenação de cartões perfurados s Resistiu ao tempo e foi utilizado em computadores digitais 4
  • 5. 2 Base s Diferente dos outros métodos de ordenação que usam comparação e troca s Se baseia em duas características do sistema numérico arábico: – Princípio da Limitação de Dígitos – Princípio do Valor pela Posição 5
  • 6. 2.1 Princípio da Limitação de Dígitos s O número de dígitos (caracteres) usados numa base numérica é limitado s A quantidade de números que podem representar quando combinados é infinita Base Numérica Dígitos (Caracteres) Decimal 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Binária 0, 1 Hexadecimal 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F 6
  • 7. 2.1 Princípio da Limitação de Dígitos s O algoritmo já “conhece” a ordem correta dos dígitos da base numérica (decimal) s Logo, pode ordenar um vetor com dados de no máximo um dígito 7
  • 8. 2.2 Princípio do Valor pela Posição s O valor de cada dígito muda de acordo com a posição em que ocupa no número s Exemplos: Base Valor do Dígito na Posição N 3 2 1 (N – 1) 2 1 B Dígito * B Dígito * B Dígito * B Dígito * 1 (N – 1) Decimal Dígito * 10 Dígito * 100 Dígito * 10 Dígito * 1 (N – 1) Binária Dígito * 2 Dígito * 4 Dígito * 2 Dígito * 1 (N – 1) Hexadecimal Dígito * 16 Dígito * 256 Dígito * 16 Dígito * 1 s Logo, qualquer dígito à direita representa mais que qualquer dígito à esquerda 8
  • 9. 2.3 Aplicando os Dois Princípios s Inicia-se ordenando os dados pelo dígito da posição 1 (menos significativo) s Para essa ordenação é usado um algoritmo baseado no Princípio da Limitação de Dígitos s Passa-se então para a ordenação pelo dígito da posição 2, depois 3 e assim por diante, até o número máximo de dígitos que os dados podem ter 9
  • 10. 3 Algoritmo s Um exemplo de algoritmo em português estruturado e a sua aplicação sobre um vetor exemplo s 3.1 Código Programa Principal: Início Para cada posição começando pela 1 até a máxima que as chaves podem ter { Ordenar o vetor pelo dígito dessa posição; } 10 Fim.
  • 11. 3.1 Código Subrotina Ordenar Vetor pelo Dígito da Posição X: Início Criar um vetor chamado Fila, da posição 0 até a 9, de filas; Para cada elemento do Vetor { F = Obter o dígito desse elemento na Posição X; Colocar esse elemento na Fila F; } 11
  • 12. 3.1 Código A Posição Atual do Vetor é o início; Para Y = 0 até 9 { Colocar cada elemento da Fila[Y] no Vetor a partir da Posição Atual; A Posição Atual do Vetor é o seu próprio valor somado ao tamanho da Fila[Y]; } Fim; 12
  • 13. 3.2 Aplicação s Vetor exemplo a ser ordenado: Posição Dado (Chave) 1 15 2 2 3 21 4 11 5 8 6 1 7 30 8 9 9 10 10 6 13
  • 14. 3.2 Aplicação s Passo 1: Programa Principal: Início Para cada posição começando pela 1 até a máxima que as chaves podem ter { Ordenar o vetor pelo dígito dessa posição; } 14
  • 15. 3.2 Aplicação s Passo 2: Subrotina Ordenar Vetor pelo Dígito da Posição X: Início Criar um vetor chamado Fila, da posição 0 até a 9, de filas; 15
  • 16. 3.2 Aplicação s O Vetor de filas “Fila” criado: Fila Elementos 0 1 2 3 4 5 6 7 8 9 16
  • 17. 3.2 Aplicação s Passo 3: Para cada elemento do Vetor { F = Obter o dígito desse elemento na Posição X; Colocar esse elemento na Fila F; } 17
  • 18. 3.2 Aplicação s Ao fim do laço: Fila Elementos 0 30, 10 1 21, 11, 1 2 2 3 4 5 15 6 6 7 8 8 9 9 18
  • 19. 3.2 Aplicação s Passo 4: Para Y = 0 até 9 { Colocar cada elemento da Fila[Y] no Vetor a partir da Posição Atual; A Posição Atual do Vetor é o seu próprio valor somado ao tamanho da Fila[Y]; } Fim; 19
  • 20. 3.2 Aplicação s Vetor ordenado pelas unidades: Posição Dado (Chave) 1 30 2 10 3 21 4 11 5 1 6 2 7 15 8 6 9 8 10 9 20
  • 21. 3.2 Aplicação s Passo 5: – Com o fim da subrotina de ordenação por dígito, volta-se ao programa principal e é encerrada a primeira volta do laço descrito no Passo 1 – Segue-se o que foi descrito nos Passos 2 e 3, mas com o parâmetro da rotina de ordenação por dígito 2 21
  • 22. 3.2 Aplicação s Vetor ordenado pelas unidades e dezenas: Fila Elementos 0 1, 2, 6, 8, 9 1 10, 11, 15 2 21 3 30 4 5 6 7 8 9 22
  • 23. 3.2 Aplicação s Passo 6: – É repetido o processo do passo 4, que forma o vetor novamente a partir das filas – É o fim da subrotina e volta-se ao programa principal – Como foi atingido o número máximo de dígitos (2) é o fim do laço e do programa 23
  • 24. 3.2 Aplicação s Vetor ordenado ao fim do programa: Posição Dado (Chave) 1 1 2 2 3 6 4 8 5 9 6 10 7 11 8 15 9 21 10 30 24
  • 25. 4 Vantagens e Desvantagens s Utiliza pouco processamento (comparações) em relação aos outros algoritmos s Rápido para dados com poucos dígitos s É necessário saber de antemão o número máximo de dígitos dos dados s Os passos intermediários, como a separação do dado em dígitos, podem usar mais processamento que a própria ordenação. 25
  • 26. Conclusão s Deve ser utilizado em situações específicas, como por exemplo: – Quando se sabe o antecipadamente o tamanho máximo dos dados – Quando o número de dígitos dos dados não é muito grande s Se usado em situações genéricas a eficiência pode não corresponder ao desejado 26