SlideShare uma empresa Scribd logo
ALGORITMOS E ESTRUTURAS DE DADOS III
                                    Tutorial 9 (usa o compilador de linguagem C Dev-C++ versão 4.9.9.2)




Parte 3 de 3 sobre o algoritmo de ordenação heap (monte) conhecido como Heapsort.
2 SITUAÇÕES ESPECIAIS
    1 INTRODUÇÃO
    Esta série de tutoriais sobre Algoritmos e          2.1 ORDENAÇÃO POR Í NDICES
    Estruturas de Dados III foi escrita usando o
                                                        Suponha-se que os objetos a ordenar são
    Microsoft Windows 7 Ultimate, Microsoft
                                                        strings (vetores de caracteres):
    Office 2010, Bloodshed Dev-C++ versão 4.9.9.2
    (pode ser baixado em http://www.bloodshed.net),        funções que operam sobre os dados precisam
    referências na internet e notas de aula do              ter em conta a questão da alocação de
    professor quando estudante. Ela cobre desde os          memória para strings
    algoritmos de ordenação, passando pela pesquisa        quem deve ser responsável pela gestão desta
    em memória primária e culminando com a                  memória?
    pesquisa em memória secundária.                        e se os objetos são "grandes"? Comparar e
                                                            mover os objetos pode ser dispendioso!
    Nós entendemos que você já conhece o
    compilador Dev-C++. No caso de você ainda não o     Imagine que cada objeto é o nome completo
    conhecer, dê uma olhada nos tutoriais Dev-C++       de um aluno (ou que é toda a sua informação:
    001 a 017, começando pelo Tutorial Dev-C++ -        nome, endereço, telefone etc.):
    001 - Introdução.
                                                           mesmo que haja uma boa abstração para
    Se não tem problemas com a linguagem C/C++ e
                                                            operar sobre os objetos ainda há a questão do
    o compilador Dev-C++, então o próximo passo é
                                                            custo operacional.
    saber ler, criar e alterar arquivos em disco
    usando linguagem C/C++. Se ainda não sabe           Por que movê-los?
    como fazê-lo, dê uma olhada nos tutoriais Dev-
    C++ 001 e 002, começando pelo Tutorial Dev-C++         porque não alterar apenas a referência para a
    001 – Criação, Leitura e Alteração de Arquivos.         sua posição relativa?

    Se sabe todas as coisas anteriores, então a         Solução 1:
    próxima etapa é conhecer os algoritmos mais
    básicos de ordenação. Em minhas notas de aula          dados numa tabela data[0], ..., data[N-1].
    você encontra um material básico, porém                usar uma segunda tabela, a[.], apenas de
    detalhado e com algoritmos resolvidos, dos              índices, inicializado de forma que a[i] = i, i =
    principais métodos de ordenação existentes.             0, ..., N-1.
                                                            O objetivo é rearranjar a tabela de índices de
    Adotaremos o livro Projeto de Algoritmos com            forma que a[0] aponte para o objeto com a
    Implementação em Pascal e C, Editora Cengage            primeira menor chave, a[1] aponte para o
    Learning, de Nivio Ziviani, como livro-texto da         objeto com a segunda menor chave, e assim
    disciplina. Nele você encontrará os métodos de          por diante.
    ordenação que iremos estudar.                          objetos      são   apenas    acessados     para
                                                            comparação
    Seu próximo passo será estudar os algoritmos de
    ordenação por Inserção, Seleção, Shellsort e        Rotinas de ordenação apenas acessam os dados
    Heapsort. Você pode usar os links anteriores (em    através de funções de interface. Assim, apenas
    inglês) ou fazer uso do livro-texto.                estas têm de ser reescritas.

    Em seguida, você precisa conhecer o algoritmo       Suponha os seguintes dados:
    Heapsort. Para isto, você pode seguir o Tutorial                        data = [“rui”, “carlos”, “luis”]
    AED 007, desta série, e/ou ler o capítulo
    referente no livro-texto.                           Usamos uma tabela de índices:
                                                                                                a = [0, 1, 2]
    Se você estiver lendo este tutorial tenha certeza
    de ter seguido os Tutoriais AED 007 e 008. Agora       1º passo: comparar data[a[1]] com data[a[0]]:
    que você seguiu todos os passos até aqui, está                                         “carlos” < “rui”
    pronto para prosseguir com este tutorial.               pelo que há troca de a[1] com a[0]:
                                                                                                a = [1, 0, 2]




1
   2º passo: comparar data[a[2]] com data[a[1]]:        2.3.1 E SE FOR PRECISO RETORNAR                                OS
                                          “rui” < “luis”     DADOS ORDENADOS?
        pelo que há troca de a[2] com a[1]:
                                                                ordenar por índice/ponteiro
                                            a = [1, 2, 0]
                                                                fazer permutações in-situ (como?1)
       3º passo: comparar data[a[1]] com data[a[0]]:
                                       “carlos” < “luis”
        pelo que não há troca                                3 EXERCÍCIOS RESOLVIDOS
                                                             1. Considere a seguinte sequência de entrada:

                                                                   1        2        3     4       5        6    7      8         9    10
    Os valores ordenados são, portanto,                            26       34       9     0       4        89   6     15        27    44

                      data[a[0]], data[a[1]] e data[a[2]],       É solicitada a realização de uma classificação
                                                                 em ordem crescente sobre a sequência dada
    ou seja,
                                                                 usando o algoritmo de ordenação Heapsort.
                                 “carlos” < “luis” < “rui”       Mostre como cada passo é executado.

    (de forma camuflada usamos uma “espécie” de              2. Os exercícios de ordenação apresentados até
    Insertion sort).                                            agora solicitam o desenvolvimento de uma
                                                                ordenação que pode ser classificada como
    2.2 ORDENAÇÃO POR PONTEIROS                                 destrutiva, porque a tabela original é
                                                                destruída e substituída pela tabela ordenada.
    Outra solução é a tabela de índices conter de fato          Uma boa alternativa é criar uma tabela
    ponteiros para os dados. Sua forma é mais geral,            auxiliar cujos índices representam a posição
    pois os ponteiros podem apontar para qualquer               dos elementos na tabela a ser classificada.
    lado.                                                       Faça um programa em C/C++ que use a
                                                                tabela auxiliar e realize a classificação
    Itens não precisam ser membros de uma tabela,
                                                                Heapsort.
    nem de ter todos o mesmo tamanho.

                                                             3. Um vetor contém os elementos exibidos a
                                                                seguir. Mostre o conteúdo do vetor depois de
                                                                ter sido executada a função constroi do
                                                                método Heapsort.
                                                                  24    4        8   14   90   8       67   27   45   19    91    99   58




    Depois da ordenação, acesso sequencial à tabela
    de ponteiros devolve os elementos ordenados.

    2.3 ORDENAÇÃO POR PONTEIROS OU
    ÍNDICES
    Não-intrusiva em relação aos dados, pois pode
    ser efetuada se os dados forem apenas de leitura.
    É possível efetuar ordenação em chaves
    múltiplas, por exemplo, listagens de alunos, com
    nome, número e nota. Evita o custo de
    mover/trocar os itens, que pode ser alto se estes
    itens representarem grandes quantidades de
    informação. É mais eficiente em problemas com
    dados grandes e chaves pequenas.



                                                             1A série iniciada com o Tutorial AED 010 e finalizada com o
                                                             Tutorial AED 016, faz exatamente isso, trabalhando com
                                                             ordenação externa.


2
4 EXERCÍCIOS PROPOSTOS
    1. Implemente um algoritmo de ordenação
       Heapsort para ordenar a lista de 10000
       inteiros, fornecida no meu blog, gravando a
       lista ordenada em um arquivo de saída.

    2. Crie um algoritmo Heapsort para ordenar o
       pequeno banco de dados abaixo, usando a
       chave {departamento, nome, idade}. Você
       pode conferir a ordenação usando uma
       planilha eletrônica. Dica: a função compare,
       do Tutorial AED 005, tópico 2.2.2 usa
       múltiplas chaves de comparação; dê uma
       olhada para se inspirar.

       Idade   Nome        Salario   Departamento
       40      Joao        100.43    Matriz
       42      Maria       200.32    Filial
       35      Amalia       50.54    Matriz
       30      Joao        150.73    Filial
       32      Mario       250.22    Matriz
       25      Amauri       60.14    Matriz


    5 TERMINAMOS
    Terminamos por aqui.

    Corra para o próximo tutorial.




3

Mais conteúdo relacionado

PDF
Tutorial aed iii 007 - algoritmo de ordenação heapsort
PDF
Tutorial aed iii 006 - algoritmo de ordenação quicksort
PDF
Tutorial aed iii 004 - algoritmo de ordenação quicksort
PDF
Tutorial aed iii 005 - algoritmo de ordenação quicksort
PPTX
Apresentação recursividade rev2
PDF
Tutorial aed iii 001 - algoritmo de ordenação shellsort
PDF
Recursividade
PPTX
Recursividade
Tutorial aed iii 007 - algoritmo de ordenação heapsort
Tutorial aed iii 006 - algoritmo de ordenação quicksort
Tutorial aed iii 004 - algoritmo de ordenação quicksort
Tutorial aed iii 005 - algoritmo de ordenação quicksort
Apresentação recursividade rev2
Tutorial aed iii 001 - algoritmo de ordenação shellsort
Recursividade
Recursividade

Mais procurados (18)

PDF
Tutorial aed iii 008 - algoritmo de ordenação heapsort
PDF
Apostila estrutura de dados 2
PDF
Tutorial aed iii 002 - algoritmo de ordenação shellsort
PPT
Recursividade
PPT
Logica Algoritmo 08 Recursividade
PPTX
Estrutura de dados em Java - Recursividade
PPTX
ShellSort - Ordenação
PDF
Aula 01
PDF
Aula 06 vetores e matrizes
PDF
Python para quem sabe Python (aula 2)
PDF
Tutorial aed iii 003 - algoritmo de ordenação shellsort
PDF
Algoritmos e Programação: Manipulação de strings
DOC
Complexidade de algoritmos insertion, selection e bubble sort.
PPT
Recursividade em C
PDF
Algoritmo Shell Sort
PDF
Python: Iteraveis, geradores etc
PDF
Análise de desempenho de algoritmos de ordenação
PDF
Programando em python recursao
Tutorial aed iii 008 - algoritmo de ordenação heapsort
Apostila estrutura de dados 2
Tutorial aed iii 002 - algoritmo de ordenação shellsort
Recursividade
Logica Algoritmo 08 Recursividade
Estrutura de dados em Java - Recursividade
ShellSort - Ordenação
Aula 01
Aula 06 vetores e matrizes
Python para quem sabe Python (aula 2)
Tutorial aed iii 003 - algoritmo de ordenação shellsort
Algoritmos e Programação: Manipulação de strings
Complexidade de algoritmos insertion, selection e bubble sort.
Recursividade em C
Algoritmo Shell Sort
Python: Iteraveis, geradores etc
Análise de desempenho de algoritmos de ordenação
Programando em python recursao
Anúncio

Destaque (20)

PDF
POO - 05 - Ambiente de Desenvolvimento
PDF
Apostila de dev
PDF
Guia arduino iniciante multilogica ARDUINO
PDF
Aprendendo a programar em arduino
PDF
Python Orientação a Objeto
PDF
Apostila java completo
PDF
Cartilhado arduino ed1
PDF
Aula 02 - Introdução ao PHP
PDF
PHP Aula 05 - E-mails, Cookies e Sessoes
PDF
Encapsulamento em Orientação a Objetos
PDF
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
PPTX
Programação Estruturada e Orientada a Objetos
PDF
Apostila Arduino.(Melhor Apostila)
PDF
Aula03 PHP - Estruturas Condicionais
PDF
Aula 02 - Principios da Orientação a Objetos (POO)
PDF
Curso avançado de c++ em portugues
PPTX
JAVA - Orientação a Objetos
PDF
Apostila LINUX Básico
PDF
2672853-apostila-completa-de-Java
PPTX
Programação Orientada a Objetos com Java
POO - 05 - Ambiente de Desenvolvimento
Apostila de dev
Guia arduino iniciante multilogica ARDUINO
Aprendendo a programar em arduino
Python Orientação a Objeto
Apostila java completo
Cartilhado arduino ed1
Aula 02 - Introdução ao PHP
PHP Aula 05 - E-mails, Cookies e Sessoes
Encapsulamento em Orientação a Objetos
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
Programação Estruturada e Orientada a Objetos
Apostila Arduino.(Melhor Apostila)
Aula03 PHP - Estruturas Condicionais
Aula 02 - Principios da Orientação a Objetos (POO)
Curso avançado de c++ em portugues
JAVA - Orientação a Objetos
Apostila LINUX Básico
2672853-apostila-completa-de-Java
Programação Orientada a Objetos com Java
Anúncio

Semelhante a Tutorial aed iii 009 - algoritmo de ordenação heapsort (20)

PPTX
Algorítimo de ordenação
PPTX
PDF
Estrutura de dados
PDF
Ordenação de vetores
PDF
Algoritmo de ordenação heapsort.
PDF
Algoritmo0
PDF
Metodos de ordenação em c#
DOC
Ordenação de Dados por Distribuição de Chaves
PDF
Métodos de ordenação sorting-intro.pdf
PDF
Aula01- Algoritmos e Estruturas de dados 2
PDF
Algoritmos e métodos de Ordenação pt1.pdf
PDF
Semana10-ordenacao-pesquisa-vetores
PDF
Ordenação de Dados por Distribuição de Chaves
PDF
7082 texto do artigo-33807-2-10-20180903
PDF
Estrutura de Dados e Algoritmos em Python.pdf
PDF
Comparação Experimental de Algoritmos de Ordenação
PDF
PPTX
Algoritmos de ordenação
PDF
Estrutra de dados java muito bom
DOC
Trabalho métodos de ordenação
Algorítimo de ordenação
Estrutura de dados
Ordenação de vetores
Algoritmo de ordenação heapsort.
Algoritmo0
Metodos de ordenação em c#
Ordenação de Dados por Distribuição de Chaves
Métodos de ordenação sorting-intro.pdf
Aula01- Algoritmos e Estruturas de dados 2
Algoritmos e métodos de Ordenação pt1.pdf
Semana10-ordenacao-pesquisa-vetores
Ordenação de Dados por Distribuição de Chaves
7082 texto do artigo-33807-2-10-20180903
Estrutura de Dados e Algoritmos em Python.pdf
Comparação Experimental de Algoritmos de Ordenação
Algoritmos de ordenação
Estrutra de dados java muito bom
Trabalho métodos de ordenação

Mais de Flávio Freitas (15)

PDF
5º apl cursos técnicos - informática básica e aplicada 2012 - br office.org...
PDF
5º apl cursos técnicos - informática básica e aplicada 2012 - br office.org...
PDF
Tutorial dev cpp 001 - criação, leitura e alteração de arquivos
PDF
Tutorial dev cpp 002 - criação, leitura e alteração de arquivos
PPTX
Aula 001 histórico dos computadores
PPTX
Aula 004 noções de hardware
PPTX
Aula 005 noções de hardware
PPTX
Aula 001 plan. e sist. comp. aplic. à adm. - o computador na sociedade, nas...
PPTX
Aula 003 plan. e sist. comp. aplic. à adm. - estudos dos principais sistema...
PPTX
Aula 004 plan. e sist. comp. aplic. à adm. - estudos dos principais sistema...
PDF
Solução dos exercícios do livro Algoritmos e Estruturas de Dados dos autores ...
PDF
Algoritmos para estruturas de dados
PDF
Algoritmos de ordenação
PPTX
Matemática computacional aula 002
PPTX
Matemática computacional aula 001
5º apl cursos técnicos - informática básica e aplicada 2012 - br office.org...
5º apl cursos técnicos - informática básica e aplicada 2012 - br office.org...
Tutorial dev cpp 001 - criação, leitura e alteração de arquivos
Tutorial dev cpp 002 - criação, leitura e alteração de arquivos
Aula 001 histórico dos computadores
Aula 004 noções de hardware
Aula 005 noções de hardware
Aula 001 plan. e sist. comp. aplic. à adm. - o computador na sociedade, nas...
Aula 003 plan. e sist. comp. aplic. à adm. - estudos dos principais sistema...
Aula 004 plan. e sist. comp. aplic. à adm. - estudos dos principais sistema...
Solução dos exercícios do livro Algoritmos e Estruturas de Dados dos autores ...
Algoritmos para estruturas de dados
Algoritmos de ordenação
Matemática computacional aula 002
Matemática computacional aula 001

Último (20)

PPTX
Filosofia Ocidental Antiga 2025 - versão atualizada
PPTX
Revolução Industrial - Aula Expositiva - 3U4.pptx
PDF
Metabolismo_energético_3ano_pre_vest_2026.pdf
PPTX
Slides Lição 7, CPAD, Uma Igreja Que Não Teme A Perseguição, 3Tr25.pptx
PPT
sistema reprodutor para turmas do oitavo ano
PPTX
biossegurança e segurança no trabalho (6).pptx
PPTX
Noções de Saúde e Segurança do Trabalho.pptx
PPTX
A História da Europa na Baixa Idade Média.pptx
PDF
Cantores.pdf-Deslandes, Tinoco e Zambujo
PDF
A relação entre funções executivas e desempenho acadêmico em crianças com Tra...
PPTX
norma regulamentadora numero vinte nr 20
PPTX
Realismo e Naturalismo: Aluísio Azevedo.
PDF
Ementa 2 semestre PEI Orientação de estudo
PDF
BINGOS_DAS_PALAVRAS_bingo das palavras.pdf
PDF
A provisão de jojuador (ramadã) islamismo
PPTX
Trabalho Cidades sustentáveis ou Utopia.pptx
PPTX
Ciências da Natureza e suas áreas de desenvolvimento
PDF
manual-orientacao-asb_5a8d6d8d87160aa636f63a5d0.pdf
PDF
ESPELHOS DA ALMA A PSICOLOGIA POR TRÁS DOS CONTOS DE FADAS.pdf
PPTX
ACIDOS NUCLEICOS - REPLICAÇÃO DO DNA - E.M.
Filosofia Ocidental Antiga 2025 - versão atualizada
Revolução Industrial - Aula Expositiva - 3U4.pptx
Metabolismo_energético_3ano_pre_vest_2026.pdf
Slides Lição 7, CPAD, Uma Igreja Que Não Teme A Perseguição, 3Tr25.pptx
sistema reprodutor para turmas do oitavo ano
biossegurança e segurança no trabalho (6).pptx
Noções de Saúde e Segurança do Trabalho.pptx
A História da Europa na Baixa Idade Média.pptx
Cantores.pdf-Deslandes, Tinoco e Zambujo
A relação entre funções executivas e desempenho acadêmico em crianças com Tra...
norma regulamentadora numero vinte nr 20
Realismo e Naturalismo: Aluísio Azevedo.
Ementa 2 semestre PEI Orientação de estudo
BINGOS_DAS_PALAVRAS_bingo das palavras.pdf
A provisão de jojuador (ramadã) islamismo
Trabalho Cidades sustentáveis ou Utopia.pptx
Ciências da Natureza e suas áreas de desenvolvimento
manual-orientacao-asb_5a8d6d8d87160aa636f63a5d0.pdf
ESPELHOS DA ALMA A PSICOLOGIA POR TRÁS DOS CONTOS DE FADAS.pdf
ACIDOS NUCLEICOS - REPLICAÇÃO DO DNA - E.M.

Tutorial aed iii 009 - algoritmo de ordenação heapsort

  • 1. ALGORITMOS E ESTRUTURAS DE DADOS III Tutorial 9 (usa o compilador de linguagem C Dev-C++ versão 4.9.9.2) Parte 3 de 3 sobre o algoritmo de ordenação heap (monte) conhecido como Heapsort.
  • 2. 2 SITUAÇÕES ESPECIAIS 1 INTRODUÇÃO Esta série de tutoriais sobre Algoritmos e 2.1 ORDENAÇÃO POR Í NDICES Estruturas de Dados III foi escrita usando o Suponha-se que os objetos a ordenar são Microsoft Windows 7 Ultimate, Microsoft strings (vetores de caracteres): Office 2010, Bloodshed Dev-C++ versão 4.9.9.2 (pode ser baixado em http://www.bloodshed.net),  funções que operam sobre os dados precisam referências na internet e notas de aula do ter em conta a questão da alocação de professor quando estudante. Ela cobre desde os memória para strings algoritmos de ordenação, passando pela pesquisa  quem deve ser responsável pela gestão desta em memória primária e culminando com a memória? pesquisa em memória secundária.  e se os objetos são "grandes"? Comparar e mover os objetos pode ser dispendioso! Nós entendemos que você já conhece o compilador Dev-C++. No caso de você ainda não o Imagine que cada objeto é o nome completo conhecer, dê uma olhada nos tutoriais Dev-C++ de um aluno (ou que é toda a sua informação: 001 a 017, começando pelo Tutorial Dev-C++ - nome, endereço, telefone etc.): 001 - Introdução.  mesmo que haja uma boa abstração para Se não tem problemas com a linguagem C/C++ e operar sobre os objetos ainda há a questão do o compilador Dev-C++, então o próximo passo é custo operacional. saber ler, criar e alterar arquivos em disco usando linguagem C/C++. Se ainda não sabe Por que movê-los? como fazê-lo, dê uma olhada nos tutoriais Dev- C++ 001 e 002, começando pelo Tutorial Dev-C++  porque não alterar apenas a referência para a 001 – Criação, Leitura e Alteração de Arquivos. sua posição relativa? Se sabe todas as coisas anteriores, então a Solução 1: próxima etapa é conhecer os algoritmos mais básicos de ordenação. Em minhas notas de aula  dados numa tabela data[0], ..., data[N-1]. você encontra um material básico, porém  usar uma segunda tabela, a[.], apenas de detalhado e com algoritmos resolvidos, dos índices, inicializado de forma que a[i] = i, i = principais métodos de ordenação existentes. 0, ..., N-1. O objetivo é rearranjar a tabela de índices de Adotaremos o livro Projeto de Algoritmos com forma que a[0] aponte para o objeto com a Implementação em Pascal e C, Editora Cengage primeira menor chave, a[1] aponte para o Learning, de Nivio Ziviani, como livro-texto da objeto com a segunda menor chave, e assim disciplina. Nele você encontrará os métodos de por diante. ordenação que iremos estudar.  objetos são apenas acessados para comparação Seu próximo passo será estudar os algoritmos de ordenação por Inserção, Seleção, Shellsort e Rotinas de ordenação apenas acessam os dados Heapsort. Você pode usar os links anteriores (em através de funções de interface. Assim, apenas inglês) ou fazer uso do livro-texto. estas têm de ser reescritas. Em seguida, você precisa conhecer o algoritmo Suponha os seguintes dados: Heapsort. Para isto, você pode seguir o Tutorial data = [“rui”, “carlos”, “luis”] AED 007, desta série, e/ou ler o capítulo referente no livro-texto. Usamos uma tabela de índices: a = [0, 1, 2] Se você estiver lendo este tutorial tenha certeza de ter seguido os Tutoriais AED 007 e 008. Agora  1º passo: comparar data[a[1]] com data[a[0]]: que você seguiu todos os passos até aqui, está “carlos” < “rui” pronto para prosseguir com este tutorial. pelo que há troca de a[1] com a[0]: a = [1, 0, 2] 1
  • 3. 2º passo: comparar data[a[2]] com data[a[1]]: 2.3.1 E SE FOR PRECISO RETORNAR OS “rui” < “luis” DADOS ORDENADOS? pelo que há troca de a[2] com a[1]:  ordenar por índice/ponteiro a = [1, 2, 0]  fazer permutações in-situ (como?1)  3º passo: comparar data[a[1]] com data[a[0]]: “carlos” < “luis” pelo que não há troca 3 EXERCÍCIOS RESOLVIDOS 1. Considere a seguinte sequência de entrada: 1 2 3 4 5 6 7 8 9 10 Os valores ordenados são, portanto, 26 34 9 0 4 89 6 15 27 44 data[a[0]], data[a[1]] e data[a[2]], É solicitada a realização de uma classificação em ordem crescente sobre a sequência dada ou seja, usando o algoritmo de ordenação Heapsort. “carlos” < “luis” < “rui” Mostre como cada passo é executado. (de forma camuflada usamos uma “espécie” de 2. Os exercícios de ordenação apresentados até Insertion sort). agora solicitam o desenvolvimento de uma ordenação que pode ser classificada como 2.2 ORDENAÇÃO POR PONTEIROS destrutiva, porque a tabela original é destruída e substituída pela tabela ordenada. Outra solução é a tabela de índices conter de fato Uma boa alternativa é criar uma tabela ponteiros para os dados. Sua forma é mais geral, auxiliar cujos índices representam a posição pois os ponteiros podem apontar para qualquer dos elementos na tabela a ser classificada. lado. Faça um programa em C/C++ que use a tabela auxiliar e realize a classificação Itens não precisam ser membros de uma tabela, Heapsort. nem de ter todos o mesmo tamanho. 3. Um vetor contém os elementos exibidos a seguir. Mostre o conteúdo do vetor depois de ter sido executada a função constroi do método Heapsort. 24 4 8 14 90 8 67 27 45 19 91 99 58 Depois da ordenação, acesso sequencial à tabela de ponteiros devolve os elementos ordenados. 2.3 ORDENAÇÃO POR PONTEIROS OU ÍNDICES Não-intrusiva em relação aos dados, pois pode ser efetuada se os dados forem apenas de leitura. É possível efetuar ordenação em chaves múltiplas, por exemplo, listagens de alunos, com nome, número e nota. Evita o custo de mover/trocar os itens, que pode ser alto se estes itens representarem grandes quantidades de informação. É mais eficiente em problemas com dados grandes e chaves pequenas. 1A série iniciada com o Tutorial AED 010 e finalizada com o Tutorial AED 016, faz exatamente isso, trabalhando com ordenação externa. 2
  • 4. 4 EXERCÍCIOS PROPOSTOS 1. Implemente um algoritmo de ordenação Heapsort para ordenar a lista de 10000 inteiros, fornecida no meu blog, gravando a lista ordenada em um arquivo de saída. 2. Crie um algoritmo Heapsort para ordenar o pequeno banco de dados abaixo, usando a chave {departamento, nome, idade}. Você pode conferir a ordenação usando uma planilha eletrônica. Dica: a função compare, do Tutorial AED 005, tópico 2.2.2 usa múltiplas chaves de comparação; dê uma olhada para se inspirar. Idade Nome Salario Departamento 40 Joao 100.43 Matriz 42 Maria 200.32 Filial 35 Amalia 50.54 Matriz 30 Joao 150.73 Filial 32 Mario 250.22 Matriz 25 Amauri 60.14 Matriz 5 TERMINAMOS Terminamos por aqui. Corra para o próximo tutorial. 3