SlideShare ist ein Scribd-Unternehmen logo
1 von 4
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

Tutorial aed iii 008 - algoritmo de ordenação heapsort
Tutorial aed iii   008 - algoritmo de ordenação heapsortTutorial aed iii   008 - algoritmo de ordenação heapsort
Tutorial aed iii 008 - algoritmo de ordenação heapsortFlávio Freitas
 
Apostila estrutura de dados 2
Apostila estrutura de dados 2Apostila estrutura de dados 2
Apostila estrutura de dados 2Leandro Lopes
 
Tutorial aed iii 002 - algoritmo de ordenação shellsort
Tutorial aed iii   002 - algoritmo de ordenação shellsortTutorial aed iii   002 - algoritmo de ordenação shellsort
Tutorial aed iii 002 - algoritmo de ordenação shellsortFlávio Freitas
 
Logica Algoritmo 08 Recursividade
Logica Algoritmo 08 RecursividadeLogica Algoritmo 08 Recursividade
Logica Algoritmo 08 RecursividadeRegis Magalhães
 
ShellSort - Ordenação
ShellSort - OrdenaçãoShellSort - Ordenação
ShellSort - OrdenaçãoAnderson Zardo
 
Aula 06 vetores e matrizes
Aula 06   vetores e matrizesAula 06   vetores e matrizes
Aula 06 vetores e matrizesTácito Graça
 
Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Luciano Ramalho
 
Tutorial aed iii 003 - algoritmo de ordenação shellsort
Tutorial aed iii   003 - algoritmo de ordenação shellsortTutorial aed iii   003 - algoritmo de ordenação shellsort
Tutorial aed iii 003 - algoritmo de ordenação shellsortFlávio Freitas
 
Algoritmos e Programação: Manipulação de strings
Algoritmos e Programação: Manipulação de stringsAlgoritmos e Programação: Manipulação de strings
Algoritmos e Programação: Manipulação de stringsAlex Camargo
 
Complexidade de algoritmos insertion, selection e bubble sort.
Complexidade de algoritmos insertion, selection e bubble sort.Complexidade de algoritmos insertion, selection e bubble sort.
Complexidade de algoritmos insertion, selection e bubble sort.Júlio Rocha
 
Recursividade em C
Recursividade em CRecursividade em C
Recursividade em CCaique Silva
 
Python: Iteraveis, geradores etc
Python: Iteraveis, geradores etcPython: Iteraveis, geradores etc
Python: Iteraveis, geradores etcLuciano Ramalho
 
Análise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenaçãoAnálise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenaçãoGustavo Carvalho
 
Programando em python recursao
Programando em python   recursaoProgramando em python   recursao
Programando em python recursaosamuelthiago
 

Was ist angesagt? (18)

Tutorial aed iii 008 - algoritmo de ordenação heapsort
Tutorial aed iii   008 - algoritmo de ordenação heapsortTutorial aed iii   008 - algoritmo de ordenação heapsort
Tutorial aed iii 008 - algoritmo de ordenação heapsort
 
Apostila estrutura de dados 2
Apostila estrutura de dados 2Apostila estrutura de dados 2
Apostila estrutura de dados 2
 
Tutorial aed iii 002 - algoritmo de ordenação shellsort
Tutorial aed iii   002 - algoritmo de ordenação shellsortTutorial aed iii   002 - algoritmo de ordenação shellsort
Tutorial aed iii 002 - algoritmo de ordenação shellsort
 
Recursividade
RecursividadeRecursividade
Recursividade
 
Logica Algoritmo 08 Recursividade
Logica Algoritmo 08 RecursividadeLogica Algoritmo 08 Recursividade
Logica Algoritmo 08 Recursividade
 
Estrutura de dados em Java - Recursividade
Estrutura de dados em Java - RecursividadeEstrutura de dados em Java - Recursividade
Estrutura de dados em Java - Recursividade
 
ShellSort - Ordenação
ShellSort - OrdenaçãoShellSort - Ordenação
ShellSort - Ordenação
 
Aula 01
Aula 01Aula 01
Aula 01
 
Aula 06 vetores e matrizes
Aula 06   vetores e matrizesAula 06   vetores e matrizes
Aula 06 vetores e matrizes
 
Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)
 
Tutorial aed iii 003 - algoritmo de ordenação shellsort
Tutorial aed iii   003 - algoritmo de ordenação shellsortTutorial aed iii   003 - algoritmo de ordenação shellsort
Tutorial aed iii 003 - algoritmo de ordenação shellsort
 
Algoritmos e Programação: Manipulação de strings
Algoritmos e Programação: Manipulação de stringsAlgoritmos e Programação: Manipulação de strings
Algoritmos e Programação: Manipulação de strings
 
Complexidade de algoritmos insertion, selection e bubble sort.
Complexidade de algoritmos insertion, selection e bubble sort.Complexidade de algoritmos insertion, selection e bubble sort.
Complexidade de algoritmos insertion, selection e bubble sort.
 
Recursividade em C
Recursividade em CRecursividade em C
Recursividade em C
 
Algoritmo Shell Sort
Algoritmo Shell SortAlgoritmo Shell Sort
Algoritmo Shell Sort
 
Python: Iteraveis, geradores etc
Python: Iteraveis, geradores etcPython: Iteraveis, geradores etc
Python: Iteraveis, geradores etc
 
Análise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenaçãoAnálise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenação
 
Programando em python recursao
Programando em python   recursaoProgramando em python   recursao
Programando em python recursao
 

Andere mochten auch

Guia arduino iniciante multilogica ARDUINO
Guia arduino iniciante multilogica ARDUINOGuia arduino iniciante multilogica ARDUINO
Guia arduino iniciante multilogica ARDUINOChellton Almeida
 
Aprendendo a programar em arduino
Aprendendo a programar em arduinoAprendendo a programar em arduino
Aprendendo a programar em arduinoChellton Almeida
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPDaniel Brandão
 
PHP Aula 05 - E-mails, Cookies e Sessoes
PHP Aula 05 - E-mails, Cookies e SessoesPHP Aula 05 - E-mails, Cookies e Sessoes
PHP Aula 05 - E-mails, Cookies e SessoesDaniel Brandão
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosDaniel Brandão
 
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosAula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosDaniel Brandão
 
Apostila Arduino.(Melhor Apostila)
Apostila Arduino.(Melhor Apostila)Apostila Arduino.(Melhor Apostila)
Apostila Arduino.(Melhor Apostila)Chellton Almeida
 
Aula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas CondicionaisAula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas CondicionaisDaniel Brandão
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Daniel Brandão
 
Curso avançado de c++ em portugues
Curso avançado de c++ em portuguesCurso avançado de c++ em portugues
Curso avançado de c++ em portuguesLaura
 
Apostila LINUX Básico
Apostila LINUX BásicoApostila LINUX Básico
Apostila LINUX BásicoFernando Palma
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaÁlvaro Farias Pinheiro
 

Andere mochten auch (20)

POO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de DesenvolvimentoPOO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de Desenvolvimento
 
Apostila de dev
Apostila de devApostila de dev
Apostila de dev
 
Guia arduino iniciante multilogica ARDUINO
Guia arduino iniciante multilogica ARDUINOGuia arduino iniciante multilogica ARDUINO
Guia arduino iniciante multilogica ARDUINO
 
Aprendendo a programar em arduino
Aprendendo a programar em arduinoAprendendo a programar em arduino
Aprendendo a programar em arduino
 
Python Orientação a Objeto
Python Orientação a ObjetoPython Orientação a Objeto
Python Orientação a Objeto
 
Apostila java completo
Apostila java completoApostila java completo
Apostila java completo
 
Cartilhado arduino ed1
Cartilhado arduino ed1Cartilhado arduino ed1
Cartilhado arduino ed1
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHP
 
PHP Aula 05 - E-mails, Cookies e Sessoes
PHP Aula 05 - E-mails, Cookies e SessoesPHP Aula 05 - E-mails, Cookies e Sessoes
PHP Aula 05 - E-mails, Cookies e Sessoes
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a Objetos
 
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosAula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
 
Programação Estruturada e Orientada a Objetos
Programação Estruturada e Orientada a ObjetosProgramação Estruturada e Orientada a Objetos
Programação Estruturada e Orientada a Objetos
 
Apostila Arduino.(Melhor Apostila)
Apostila Arduino.(Melhor Apostila)Apostila Arduino.(Melhor Apostila)
Apostila Arduino.(Melhor Apostila)
 
Aula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas CondicionaisAula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas Condicionais
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
 
Curso avançado de c++ em portugues
Curso avançado de c++ em portuguesCurso avançado de c++ em portugues
Curso avançado de c++ em portugues
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
 
Apostila LINUX Básico
Apostila LINUX BásicoApostila LINUX Básico
Apostila LINUX Básico
 
2672853-apostila-completa-de-Java
2672853-apostila-completa-de-Java2672853-apostila-completa-de-Java
2672853-apostila-completa-de-Java
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com Java
 

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

Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++PeslPinguim
 
Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7PeslPinguim
 
Coleções Propriedade, Resources e Strings
Coleções Propriedade, Resources e StringsColeções Propriedade, Resources e Strings
Coleções Propriedade, Resources e StringsDenis L Presciliano
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e ExercíciosArthur Emanuel
 
Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Eduardo Carvalho
 
Curso matlab 6 especiais
Curso matlab 6 especiaisCurso matlab 6 especiais
Curso matlab 6 especiaisJosh Santos
 
Mapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMMapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMFábio Rehm
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dadosgjpbg
 
SciLab -Tutorial
SciLab -TutorialSciLab -Tutorial
SciLab -Tutorialblogmaxima
 
Estruturas de dados e técnicas de programação
Estruturas de dados e técnicas de programaçãoEstruturas de dados e técnicas de programação
Estruturas de dados e técnicas de programaçãoEverson Wolf
 

Ähnlich wie Tutorial aed iii 009 - algoritmo de ordenação heapsort (20)

Aula 21
Aula 21Aula 21
Aula 21
 
Linguagem R
Linguagem RLinguagem R
Linguagem R
 
Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++
 
Aula1
Aula1Aula1
Aula1
 
Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7
 
Java 14
Java 14Java 14
Java 14
 
Coleções Propriedade, Resources e Strings
Coleções Propriedade, Resources e StringsColeções Propriedade, Resources e Strings
Coleções Propriedade, Resources e Strings
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e Exercícios
 
Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections
 
P566Aula06
P566Aula06P566Aula06
P566Aula06
 
Curso matlab 6 especiais
Curso matlab 6 especiaisCurso matlab 6 especiais
Curso matlab 6 especiais
 
Mapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMMapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORM
 
Cap09
Cap09Cap09
Cap09
 
Cap09
Cap09Cap09
Cap09
 
Cap09
Cap09Cap09
Cap09
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
SciLab -Tutorial
SciLab -TutorialSciLab -Tutorial
SciLab -Tutorial
 
Capitulo 1
Capitulo 1Capitulo 1
Capitulo 1
 
Estruturas de dados e técnicas de programação
Estruturas de dados e técnicas de programaçãoEstruturas de dados e técnicas de programação
Estruturas de dados e técnicas de programação
 
Top0
Top0Top0
Top0
 

Mehr von Flávio Freitas

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...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...Flávio Freitas
 
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...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...Flávio Freitas
 
Tutorial dev cpp 001 - criação, leitura e alteração de arquivos
Tutorial dev cpp   001 - criação, leitura e alteração de arquivosTutorial dev cpp   001 - criação, leitura e alteração de arquivos
Tutorial dev cpp 001 - criação, leitura e alteração de arquivosFlávio Freitas
 
Tutorial dev cpp 002 - criação, leitura e alteração de arquivos
Tutorial dev cpp   002 - criação, leitura e alteração de arquivosTutorial dev cpp   002 - criação, leitura e alteração de arquivos
Tutorial dev cpp 002 - criação, leitura e alteração de arquivosFlávio Freitas
 
Aula 001 histórico dos computadores
Aula 001   histórico dos computadoresAula 001   histórico dos computadores
Aula 001 histórico dos computadoresFlávio Freitas
 
Aula 004 noções de hardware
Aula 004   noções de hardwareAula 004   noções de hardware
Aula 004 noções de hardwareFlávio Freitas
 
Aula 005 noções de hardware
Aula 005   noções de hardwareAula 005   noções de hardware
Aula 005 noções de hardwareFlávio Freitas
 
Aula 001 plan. e sist. comp. aplic. à adm. - o computador na sociedade, nas...
Aula 001   plan. e sist. comp. aplic. à adm. - o computador na sociedade, nas...Aula 001   plan. e sist. comp. aplic. à adm. - o computador na sociedade, nas...
Aula 001 plan. e sist. comp. aplic. à adm. - o computador na sociedade, nas...Flávio Freitas
 
Aula 003 plan. e sist. comp. aplic. à adm. - estudos dos principais sistema...
Aula 003   plan. e sist. comp. aplic. à adm. - estudos dos principais sistema...Aula 003   plan. e sist. comp. aplic. à adm. - estudos dos principais sistema...
Aula 003 plan. e sist. comp. aplic. à adm. - estudos dos principais sistema...Flávio Freitas
 
Aula 004 plan. e sist. comp. aplic. à adm. - estudos dos principais sistema...
Aula 004   plan. e sist. comp. aplic. à adm. - estudos dos principais sistema...Aula 004   plan. e sist. comp. aplic. à adm. - estudos dos principais sistema...
Aula 004 plan. e sist. comp. aplic. à adm. - estudos dos principais sistema...Flávio Freitas
 
Solução dos exercícios do livro Algoritmos e Estruturas de Dados dos autores ...
Solução dos exercícios do livro Algoritmos e Estruturas de Dados dos autores ...Solução dos exercícios do livro Algoritmos e Estruturas de Dados dos autores ...
Solução dos exercícios do livro Algoritmos e Estruturas de Dados dos autores ...Flávio Freitas
 
Algoritmos para estruturas de dados
Algoritmos para estruturas de dadosAlgoritmos para estruturas de dados
Algoritmos para estruturas de dadosFlávio Freitas
 
Algoritmos de ordenação
Algoritmos de ordenaçãoAlgoritmos de ordenação
Algoritmos de ordenaçãoFlávio Freitas
 
Matemática computacional aula 002
Matemática computacional   aula 002Matemática computacional   aula 002
Matemática computacional aula 002Flávio Freitas
 
Matemática computacional aula 001
Matemática computacional   aula 001Matemática computacional   aula 001
Matemática computacional aula 001Flávio Freitas
 

Mehr von Flávio Freitas (15)

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...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...
 
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...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   001 - criação, leitura e alteração de arquivosTutorial dev cpp   001 - criação, leitura e alteração de arquivos
Tutorial dev cpp 001 - criação, leitura e alteração de arquivos
 
Tutorial dev cpp 002 - criação, leitura e alteração de arquivos
Tutorial dev cpp   002 - criação, leitura e alteração de arquivosTutorial dev cpp   002 - 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 001   histórico dos computadoresAula 001   histórico dos computadores
Aula 001 histórico dos computadores
 
Aula 004 noções de hardware
Aula 004   noções de hardwareAula 004   noções de hardware
Aula 004 noções de hardware
 
Aula 005 noções de hardware
Aula 005   noções de hardwareAula 005   noções de hardware
Aula 005 noções de hardware
 
Aula 001 plan. e sist. comp. aplic. à adm. - o computador na sociedade, nas...
Aula 001   plan. e sist. comp. aplic. à adm. - o computador na sociedade, nas...Aula 001   plan. e sist. comp. aplic. à adm. - o computador na sociedade, nas...
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 003   plan. e sist. comp. aplic. à adm. - estudos dos principais sistema...Aula 003   plan. e sist. comp. aplic. à adm. - estudos dos principais sistema...
Aula 003 plan. e sist. comp. aplic. à adm. - estudos dos principais sistema...
 
Aula 004 plan. e sist. comp. aplic. à adm. - estudos dos principais sistema...
Aula 004   plan. e sist. comp. aplic. à adm. - estudos dos principais sistema...Aula 004   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 ...
Solução dos exercícios do livro Algoritmos e Estruturas de Dados dos autores ...Solução dos exercícios do livro Algoritmos e Estruturas de Dados dos autores ...
Solução dos exercícios do livro Algoritmos e Estruturas de Dados dos autores ...
 
Algoritmos para estruturas de dados
Algoritmos para estruturas de dadosAlgoritmos para estruturas de dados
Algoritmos para estruturas de dados
 
Algoritmos de ordenação
Algoritmos de ordenaçãoAlgoritmos de ordenação
Algoritmos de ordenação
 
Matemática computacional aula 002
Matemática computacional   aula 002Matemática computacional   aula 002
Matemática computacional aula 002
 
Matemática computacional aula 001
Matemática computacional   aula 001Matemática computacional   aula 001
Matemática computacional aula 001
 

Kürzlich hochgeladen

O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.denisecompasso2
 
3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptxMarlene Cunhada
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...azulassessoria9
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...marcelafinkler
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxMarcosLemes28
 
Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Cabiamar
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...andreiavys
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do séculoBiblioteca UCS
 
Apresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União EuropeiaApresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União EuropeiaCentro Jacques Delors
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticash5kpmr7w7
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfTutor de matemática Ícaro
 
Caderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfCaderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfJuliana Barbosa
 
AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022LeandroSilva126216
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxLuizHenriquedeAlmeid6
 
aprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubelaprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubeladrianaguedesbatista
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdfmarlene54545
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdLeonardoDeOliveiraLu2
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...azulassessoria9
 
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...SileideDaSilvaNascim
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...MariaCristinaSouzaLe1
 

Kürzlich hochgeladen (20)

O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do século
 
Apresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União EuropeiaApresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União Europeia
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
Caderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfCaderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdf
 
AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
aprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubelaprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubel
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introd
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
 

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