SlideShare uma empresa Scribd logo
1 de 4
Baixar para ler offline
ALGORITMOS E ESTRUTURAS DE DADOS III
                                     Tutorial 6 (usa o compilador de linguagem C Dev-C++ versão 4.9.9.2)




Parte 3 de 3 sobre o algoritmo de ordenação quick (rápido) conhecido como Quicksort.
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 e Shellsort.        Rotinas de ordenação apenas acessam os dados
    Você pode usar os links anteriores (em inglês) ou   através de funções de interface. Assim, apenas
    fazer uso do livro-texto.                           estas têm de ser reescritas.

    Em seguida, você precisa conhecer o algoritmo       Suponha os seguintes dados:
    Quicksort. Para isto, você pode seguir o Tutorial                       data = [“rui”, “carlos”, “luis”]
    AED 004, 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 o Tutorial AED 005. Agora que           1º passo: comparar data[a[1]] com data[a[0]]:
    você seguiu todos os passos até aqui, está pronto                                      “carlos” < “rui”
    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 Quicksort.
                                 “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,
                                                                Quicksort.
    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 primeira partição do
                                                                método Quicksort (faça isso para as três
                                                                formas simples de escolha do pivot: primeiro
                                                                elemento, último elemento e elemento
                                                                central).
                                                                  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.
                                                             4 EXERCÍCIOS PROPOSTOS
    Um exemplo é a função qsort, do C, que                   1. Implemente um algoritmo de ordenação
    implementa o algoritmo Quicksort.                           Quicksort para ordenar a lista de 10000
                                                                inteiros, fornecida no meu blog, gravando a
    2.3 ORDENAÇÃO POR PONTEIROS OU                              lista ordenada em um arquivo de saída.
    Í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
2. Crie um algoritmo Quicksort 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

    3. Considere uma tabela que contém certa
       sequência de valores em uma ordem
       qualquer. Suponha que exista a possibilidade
       de alguns valores aparecerem repetidos. Faça
       um algoritmo que apague os valores não
       duplicados e desloque os valores repetidos em
       direção    ao    início    da   tabela.   Esse
       deslocamento não deve alterar a ordem
       original da tabela. Veja o exemplo a seguir:

       Tab = [3 8     3   10   5     9     8   10 15 34]
       N = 10

       Tab = [3 8     3   10   8     10    #   #   #   #]
       N=6


    5 TERMINAMOS
    Terminamos por aqui.

    Corra para o próximo tutorial.




3

Mais conteúdo relacionado

Mais procurados

Apostila estrutura de dados 2
Apostila estrutura de dados 2Apostila estrutura de dados 2
Apostila estrutura de dados 2Leandro Lopes
 
Trabalho métodos de ordenação
Trabalho métodos de ordenaçãoTrabalho métodos de ordenação
Trabalho métodos de ordenaçãoDaiana de Ávila
 
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
 
Ordenação de vetores
Ordenação de vetoresOrdenação de vetores
Ordenação de vetoresalfredtaddeus
 
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
 
Semana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetoresSemana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetoresPedro Valente
 
Comparativo bubble sort e quick sort
Comparativo bubble sort e quick sortComparativo bubble sort e quick sort
Comparativo bubble sort e quick sortDaiana de Ávila
 
Trabalho de algoritmos
Trabalho de algoritmosTrabalho de algoritmos
Trabalho de algoritmosSandro Arpi
 
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
 
Análise da complexidade de algoritmos
Análise da complexidade de algoritmosAnálise da complexidade de algoritmos
Análise da complexidade de algoritmosPablo Silva
 
Tutorial Octave Matlab
Tutorial Octave MatlabTutorial Octave Matlab
Tutorial Octave Matlabblogmaxima
 
Apresentação recursividade rev2
Apresentação recursividade rev2Apresentação recursividade rev2
Apresentação recursividade rev2Rogerio Oliveira
 
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
 
Introdução ao Octave
Introdução ao OctaveIntrodução ao Octave
Introdução ao OctavePeslPinguim
 
Metodos de ordenação estrutura de dados
Metodos de ordenação   estrutura de dadosMetodos de ordenação   estrutura de dados
Metodos de ordenação estrutura de dadosThalita Chaves
 

Mais procurados (18)

Apostila estrutura de dados 2
Apostila estrutura de dados 2Apostila estrutura de dados 2
Apostila estrutura de dados 2
 
Trabalho métodos de ordenação
Trabalho métodos de ordenaçãoTrabalho métodos de ordenação
Trabalho métodos de ordenação
 
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
 
Ordenação de vetores
Ordenação de vetoresOrdenação de vetores
Ordenação de vetores
 
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
 
Semana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetoresSemana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetores
 
Comparativo bubble sort e quick sort
Comparativo bubble sort e quick sortComparativo bubble sort e quick sort
Comparativo bubble sort e quick sort
 
Algoritmos de ordenação
Algoritmos de ordenaçãoAlgoritmos de ordenação
Algoritmos de ordenação
 
Ordenação
OrdenaçãoOrdenação
Ordenação
 
Trabalho de algoritmos
Trabalho de algoritmosTrabalho de algoritmos
Trabalho de algoritmos
 
Algoritmos de busca
Algoritmos de buscaAlgoritmos de busca
Algoritmos de busca
 
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
 
Análise da complexidade de algoritmos
Análise da complexidade de algoritmosAnálise da complexidade de algoritmos
Análise da complexidade de algoritmos
 
Tutorial Octave Matlab
Tutorial Octave MatlabTutorial Octave Matlab
Tutorial Octave Matlab
 
Apresentação recursividade rev2
Apresentação recursividade rev2Apresentação recursividade rev2
Apresentação recursividade rev2
 
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...
 
Introdução ao Octave
Introdução ao OctaveIntrodução ao Octave
Introdução ao Octave
 
Metodos de ordenação estrutura de dados
Metodos de ordenação   estrutura de dadosMetodos de ordenação   estrutura de dados
Metodos de ordenação estrutura de dados
 

Destaque

Tutorial aed iii 004 - algoritmo de ordenação quicksort
Tutorial aed iii   004 - algoritmo de ordenação quicksortTutorial aed iii   004 - algoritmo de ordenação quicksort
Tutorial aed iii 004 - algoritmo de ordenação quicksortFlávio Freitas
 
Aprendendo a programar em arduino
Aprendendo a programar em arduinoAprendendo a programar em arduino
Aprendendo a programar em arduinoChellton Almeida
 
Guia arduino iniciante multilogica ARDUINO
Guia arduino iniciante multilogica ARDUINOGuia arduino iniciante multilogica ARDUINO
Guia arduino iniciante multilogica 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
 

Destaque (20)

Tutorial aed iii 004 - algoritmo de ordenação quicksort
Tutorial aed iii   004 - algoritmo de ordenação quicksortTutorial aed iii   004 - algoritmo de ordenação quicksort
Tutorial aed iii 004 - algoritmo de ordenação quicksort
 
POO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de DesenvolvimentoPOO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de Desenvolvimento
 
Aprendendo a programar em arduino
Aprendendo a programar em arduinoAprendendo a programar em arduino
Aprendendo a programar em arduino
 
Guia arduino iniciante multilogica ARDUINO
Guia arduino iniciante multilogica ARDUINOGuia arduino iniciante multilogica ARDUINO
Guia arduino iniciante multilogica ARDUINO
 
Apostila de dev
Apostila de devApostila de dev
Apostila de dev
 
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
 
Apostila Arduino.(Melhor Apostila)
Apostila Arduino.(Melhor Apostila)Apostila Arduino.(Melhor Apostila)
Apostila Arduino.(Melhor Apostila)
 
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
 
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
 

Semelhante a Tutorial aed iii 006 - algoritmo de ordenação quicksort

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
 
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
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dadosgjpbg
 
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
 
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
 
SciLab -Tutorial
SciLab -TutorialSciLab -Tutorial
SciLab -Tutorialblogmaxima
 
Java basico modulo_03
Java basico modulo_03Java basico modulo_03
Java basico modulo_03wammendes
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)Helder da Rocha
 
Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Eduardo Carvalho
 
Utilitários para Programação Concorrente em Java (2005)
Utilitários para Programação Concorrente em Java (2005)Utilitários para Programação Concorrente em Java (2005)
Utilitários para Programação Concorrente em Java (2005)Helder da Rocha
 
ODI Tutorial - Configuração Topologia
ODI Tutorial - Configuração TopologiaODI Tutorial - Configuração Topologia
ODI Tutorial - Configuração TopologiaCaio Lima
 

Semelhante a Tutorial aed iii 006 - algoritmo de ordenação quicksort (20)

Linguagem R
Linguagem RLinguagem R
Linguagem R
 
Aula 01
Aula 01Aula 01
Aula 01
 
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 - 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
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
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
 
Aula 3-lógica.pptx
Aula 3-lógica.pptxAula 3-lógica.pptx
Aula 3-lógica.pptx
 
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
 
SciLab -Tutorial
SciLab -TutorialSciLab -Tutorial
SciLab -Tutorial
 
Aula 21
Aula 21Aula 21
Aula 21
 
Java basico modulo_03
Java basico modulo_03Java basico modulo_03
Java basico modulo_03
 
Python 04
Python 04Python 04
Python 04
 
Java13
Java13Java13
Java13
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)
 
Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections
 
Utilitários para Programação Concorrente em Java (2005)
Utilitários para Programação Concorrente em Java (2005)Utilitários para Programação Concorrente em Java (2005)
Utilitários para Programação Concorrente em Java (2005)
 
Aula 5
Aula 5 Aula 5
Aula 5
 
ODI Tutorial - Configuração Topologia
ODI Tutorial - Configuração TopologiaODI Tutorial - Configuração Topologia
ODI Tutorial - Configuração Topologia
 

Mais de 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
 

Mais de 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
 

Último

"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...Rosalina Simão Nunes
 
Noções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdfNoções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdflucassilva721057
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....LuizHenriquedeAlmeid6
 
Revista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdfRevista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdfMárcio Azevedo
 
Rotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riquezaRotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riquezaronaldojacademico
 
A poesia - Definições e Característicass
A poesia - Definições e CaracterísticassA poesia - Definições e Característicass
A poesia - Definições e CaracterísticassAugusto Costa
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfCamillaBrito19
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
Música Meu Abrigo - Texto e atividade
Música   Meu   Abrigo  -   Texto e atividadeMúsica   Meu   Abrigo  -   Texto e atividade
Música Meu Abrigo - Texto e atividadeMary Alvarenga
 
Ficha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFicha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFtimaMoreira35
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManuais Formação
 
análise de redação completa - Dissertação
análise de redação completa - Dissertaçãoanálise de redação completa - Dissertação
análise de redação completa - DissertaçãoMaiteFerreira4
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavrasMary Alvarenga
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxBeatrizLittig1
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxferreirapriscilla84
 
VARIEDADES LINGUÍSTICAS - 1. pptx
VARIEDADES        LINGUÍSTICAS - 1. pptxVARIEDADES        LINGUÍSTICAS - 1. pptx
VARIEDADES LINGUÍSTICAS - 1. pptxMarlene Cunhada
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?AnabelaGuerreiro7
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números Mary Alvarenga
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxLuizHenriquedeAlmeid6
 

Último (20)

"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
 
Noções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdfNoções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdf
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
 
Revista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdfRevista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdf
 
Rotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riquezaRotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riqueza
 
A poesia - Definições e Característicass
A poesia - Definições e CaracterísticassA poesia - Definições e Característicass
A poesia - Definições e Característicass
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
Música Meu Abrigo - Texto e atividade
Música   Meu   Abrigo  -   Texto e atividadeMúsica   Meu   Abrigo  -   Texto e atividade
Música Meu Abrigo - Texto e atividade
 
Ficha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFicha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdf
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envio
 
análise de redação completa - Dissertação
análise de redação completa - Dissertaçãoanálise de redação completa - Dissertação
análise de redação completa - Dissertação
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavras
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docx
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptx
 
VARIEDADES LINGUÍSTICAS - 1. pptx
VARIEDADES        LINGUÍSTICAS - 1. pptxVARIEDADES        LINGUÍSTICAS - 1. pptx
VARIEDADES LINGUÍSTICAS - 1. pptx
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
 
Bullying, sai pra lá
Bullying,  sai pra láBullying,  sai pra lá
Bullying, sai pra lá
 

Tutorial aed iii 006 - algoritmo de ordenação quicksort

  • 1. ALGORITMOS E ESTRUTURAS DE DADOS III Tutorial 6 (usa o compilador de linguagem C Dev-C++ versão 4.9.9.2) Parte 3 de 3 sobre o algoritmo de ordenação quick (rápido) conhecido como Quicksort.
  • 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 e Shellsort. Rotinas de ordenação apenas acessam os dados Você pode usar os links anteriores (em inglês) ou através de funções de interface. Assim, apenas fazer uso do livro-texto. estas têm de ser reescritas. Em seguida, você precisa conhecer o algoritmo Suponha os seguintes dados: Quicksort. Para isto, você pode seguir o Tutorial data = [“rui”, “carlos”, “luis”] AED 004, 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 o Tutorial AED 005. Agora que  1º passo: comparar data[a[1]] com data[a[0]]: você seguiu todos os passos até aqui, está pronto “carlos” < “rui” 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 Quicksort. “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, Quicksort. 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 primeira partição do método Quicksort (faça isso para as três formas simples de escolha do pivot: primeiro elemento, último elemento e elemento central). 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. 4 EXERCÍCIOS PROPOSTOS Um exemplo é a função qsort, do C, que 1. Implemente um algoritmo de ordenação implementa o algoritmo Quicksort. Quicksort para ordenar a lista de 10000 inteiros, fornecida no meu blog, gravando a 2.3 ORDENAÇÃO POR PONTEIROS OU lista ordenada em um arquivo de saída. Í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. 2. Crie um algoritmo Quicksort 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 3. Considere uma tabela que contém certa sequência de valores em uma ordem qualquer. Suponha que exista a possibilidade de alguns valores aparecerem repetidos. Faça um algoritmo que apague os valores não duplicados e desloque os valores repetidos em direção ao início da tabela. Esse deslocamento não deve alterar a ordem original da tabela. Veja o exemplo a seguir: Tab = [3 8 3 10 5 9 8 10 15 34] N = 10 Tab = [3 8 3 10 8 10 # # # #] N=6 5 TERMINAMOS Terminamos por aqui. Corra para o próximo tutorial. 3