SlideShare uma empresa Scribd logo
Faculdade de Tecnologia de
     Presidente Prudente



Algorítmo de Ordenação


                  Análise e Desenvolvimento de Sistemas
                                             3º Módulo
O que é?

  Algoritmo que coloca os elementos de uma
dada sequência em uma certa ordem onde as
mais usadas são a numérica e a lexicográfica.
Lexigráfica

   Analisa a entrada de linhas de caracteres e
produz uma seqüência chamada de "símbolos
léxicos" (lexical tokens), ou somente "símbolos"
(tokens).
Shellsort
  (Diminuição de incrementos)

• Criado por Donald Shell em 1959, publicado
  pela Universidade de Cincinnati.

• Mais eficiente algoritmo de classificação
  dentre os de complexidade quadrática.

• É um refinamento do método de inserção
  direta.
Código em C
void shellSort(int * vet, int size) {
  int i , j , value;
  int gap = 1;
  do {
     gap = 3*gap+1;
  } while(gap < size);
  do {
            gap /= 3;
            for(i = gap; i < size; i++) {
        value =vet[i];
        j = i - gap;
        while (j >= 0 && value < vet[j]) {
            vet [j + gap] =vet[j];
            j -= gap;
        }
        vet [j + gap] = value;
     }
  } while ( gap > 1);
}
Exemplo de execução
Dado o vetor de entrada: 12, 43, 1, 6, 56, 23, 52, 9

             12, 43, 1, 6, 56, 23, 52, 9
             12, 43, 1, 6, 56, 23, 52, 9
             1, 43, 12, 6, 56, 23, 52, 9
             1, 6, 12, 23, 56, 43, 52, 9
             1, 6, 12, 23, 52, 43, 56, 9
             1, 6, 12, 23, 52, 9, 56, 43
             1, 6, 12, 9, 52, 23, 56, 43
             1, 6, 9, 12, 52, 23, 56, 43
             1, 6, 9, 12, 23, 52, 56, 43
             1, 6, 9, 12, 23, 52, 43, 56
             1, 6, 9, 12, 23, 43, 52, 56
  Obtemos o vetor ordenado: 1, 6, 9, 12, 23, 43, 52, 56.
Algorítimo de ordenação
Mergesort
                   (Fusão)
• É um exemplo de algoritmo de ordenação do tipo
  dividir-para-conquistar.
• Criar uma sequência ordenada a partir de duas
  outras também ordenadas dividindo a sequência
  original em pares de dados, ordena-as; depois as
  agrupa em sequências de quatro elementos, e
  assim por diante, até ter toda a sequência
  dividida em apenas duas partes. (resumir este
  tópico)
• Os três passos úteis do algoritmo são: dividir,
  conquistar e combinar.
Vantagem


  Algoritmo de ordenação de simples
implementação e fácil entendimento utilizando
chamadas recursivas.
Desvantagem


  Alto consumo de memória, devido a série de
chamadas recursivas.
Código em C
void mergesort(int begin, int end)        for(i = begin;i <= end;i++)
{                                                   {
        int left = 0, right = 0, middle                       if(right > end ||
= 0;                                      (left <= middle && A[left] <=
        int i = 0;                        A[right]))
                                                              {
         if(begin == end)                                                B[i] =
                   return;                A[left];
                                                                         left++;
         middle = (begin + end)/2;                            }
                                                              else
         mergesort(begin,middle);                             {
         mergesort(middle + 1,end);                                      B[i] =
                                          A[right];
                                                                         right++;
         left = begin;                                        }
         right = middle + 1;                        }
                                                    for(i = begin;i <= end;i++)
                                                              A[i] = B[i];
                                          }
Algorítimo de ordenação
Quicksort
                 (Rápido)
• Método de ordenação muito rápido e
  eficiente, inventado por C.A.R. Hoare em
  1960.
• Foi criado para tentar traduzir um dicionário
  de inglês para russo, ordenando as palavras.
• O Quicksort é um algoritmo de ordenação por
  comparação não-estável.
Como funciona?

  O Quicksort adota a estratégia de divisão e
conquista que consiste em rearranjar as chaves
de modo que as chaves "menores" precedam as
chaves "maiores".
C++
#include <algorithm>
#include <iterator>
#include <functional>
using namespace std;

template <typename T>
void sort(T begin, T end) {
  if (begin != end) {
     T middle = partition (begin, end,
bind2nd(less<iterator_traits<T>::value_type>(), *begin));
     sort (begin, middle);
     sort (max(begin + 1, middle), end);
  }
}
Algorítimo de ordenação
Algorítimo de ordenação

Mais conteúdo relacionado

PPT
Conjuntos Numericos
PPT
Logaritmo
DOCX
Conj numéricos
PPT
Números complexos bom
PPTX
Operações com intervalos
PPT
Estudo Dos Intervalos
PPT
NÚMEROS COMPLEXOS - PARTE 01
PDF
Intervalos Reais
Conjuntos Numericos
Logaritmo
Conj numéricos
Números complexos bom
Operações com intervalos
Estudo Dos Intervalos
NÚMEROS COMPLEXOS - PARTE 01
Intervalos Reais

Mais procurados (20)

PPT
Numeros complexos
PDF
Números Complexos
DOCX
Segunda parte
PPT
Intervalos Reais
PPT
Números complexos
PPT
Números complexos
PDF
3º ano conjuntos numéricos
PDF
MATEMÁTICA - CONJUNTOS NUMÉRICOS - AULA 5
RTF
NUMEROS COMPLEXOS
PPTX
Números complexos
PPT
Dvscristovam ativ5
PPT
www.AulasDeMatematicaApoio.com - Matemática - Números Complexos
PPT
NúMeros Complexos
PPT
Numeros complexos
PPT
www.AulasEnsinoMedio.com.br - Matemática - Números Complexos
PPT
Intervalos Reais
PPT
NúMeros Complexos Bom
PPTX
Conjuntos numéricos
PPS
Operações com intervalos
Numeros complexos
Números Complexos
Segunda parte
Intervalos Reais
Números complexos
Números complexos
3º ano conjuntos numéricos
MATEMÁTICA - CONJUNTOS NUMÉRICOS - AULA 5
NUMEROS COMPLEXOS
Números complexos
Dvscristovam ativ5
www.AulasDeMatematicaApoio.com - Matemática - Números Complexos
NúMeros Complexos
Numeros complexos
www.AulasEnsinoMedio.com.br - Matemática - Números Complexos
Intervalos Reais
NúMeros Complexos Bom
Conjuntos numéricos
Operações com intervalos
Anúncio

Semelhante a Algorítimo de ordenação (20)

PPT
Apresentação1
PPTX
PDF
Vetores, Matrizes e Strings em C Parte 1
PDF
Linguagem c wellington telles - aula 06
PDF
Metodos de ordenação em c#
PDF
Linguagem c wellington telles - aula 07
PPTX
Linguagem C - Vetores, Matrizes e Funções
PDF
Conhecendo ou relembrando C
PDF
Resumo computação I
ODP
Linguagem R
PPT
Lógica De Programação
DOC
KEY
Python 02
PPTX
Estrutura de linguagem de programação - Aula 2.pptx
PDF
Programação Desktop: Revisão Core Java
PDF
Herança e_vetores.pdf_
PDF
Tutorial aed iii 004 - algoritmo de ordenação quicksort
PDF
PDF
000003 complexidade
Apresentação1
Vetores, Matrizes e Strings em C Parte 1
Linguagem c wellington telles - aula 06
Metodos de ordenação em c#
Linguagem c wellington telles - aula 07
Linguagem C - Vetores, Matrizes e Funções
Conhecendo ou relembrando C
Resumo computação I
Linguagem R
Lógica De Programação
Python 02
Estrutura de linguagem de programação - Aula 2.pptx
Programação Desktop: Revisão Core Java
Herança e_vetores.pdf_
Tutorial aed iii 004 - algoritmo de ordenação quicksort
000003 complexidade
Anúncio

Último (11)

PPT
Conceitos básicos de Redes Neurais Artificiais
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PPTX
Utilizando code blockes por andre backes
PDF
Jira Software projetos completos com scrum
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Manejo integrado de pragas na cultura do algodão
PPTX
Tipos de servidor em redes de computador.pptx
PPTX
Eng. Software - pontos essenciais para o início
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Conceitos básicos de Redes Neurais Artificiais
Viasol Energia Solar -Soluções para geração e economia de energia
Utilizando code blockes por andre backes
Jira Software projetos completos com scrum
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Manejo integrado de pragas na cultura do algodão
Tipos de servidor em redes de computador.pptx
Eng. Software - pontos essenciais para o início
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf

Algorítimo de ordenação

  • 1. Faculdade de Tecnologia de Presidente Prudente Algorítmo de Ordenação Análise e Desenvolvimento de Sistemas 3º Módulo
  • 2. O que é? Algoritmo que coloca os elementos de uma dada sequência em uma certa ordem onde as mais usadas são a numérica e a lexicográfica.
  • 3. Lexigráfica Analisa a entrada de linhas de caracteres e produz uma seqüência chamada de "símbolos léxicos" (lexical tokens), ou somente "símbolos" (tokens).
  • 4. Shellsort (Diminuição de incrementos) • Criado por Donald Shell em 1959, publicado pela Universidade de Cincinnati. • Mais eficiente algoritmo de classificação dentre os de complexidade quadrática. • É um refinamento do método de inserção direta.
  • 5. Código em C void shellSort(int * vet, int size) { int i , j , value; int gap = 1; do { gap = 3*gap+1; } while(gap < size); do { gap /= 3; for(i = gap; i < size; i++) { value =vet[i]; j = i - gap; while (j >= 0 && value < vet[j]) { vet [j + gap] =vet[j]; j -= gap; } vet [j + gap] = value; } } while ( gap > 1); }
  • 6. Exemplo de execução Dado o vetor de entrada: 12, 43, 1, 6, 56, 23, 52, 9 12, 43, 1, 6, 56, 23, 52, 9 12, 43, 1, 6, 56, 23, 52, 9 1, 43, 12, 6, 56, 23, 52, 9 1, 6, 12, 23, 56, 43, 52, 9 1, 6, 12, 23, 52, 43, 56, 9 1, 6, 12, 23, 52, 9, 56, 43 1, 6, 12, 9, 52, 23, 56, 43 1, 6, 9, 12, 52, 23, 56, 43 1, 6, 9, 12, 23, 52, 56, 43 1, 6, 9, 12, 23, 52, 43, 56 1, 6, 9, 12, 23, 43, 52, 56 Obtemos o vetor ordenado: 1, 6, 9, 12, 23, 43, 52, 56.
  • 8. Mergesort (Fusão) • É um exemplo de algoritmo de ordenação do tipo dividir-para-conquistar. • Criar uma sequência ordenada a partir de duas outras também ordenadas dividindo a sequência original em pares de dados, ordena-as; depois as agrupa em sequências de quatro elementos, e assim por diante, até ter toda a sequência dividida em apenas duas partes. (resumir este tópico) • Os três passos úteis do algoritmo são: dividir, conquistar e combinar.
  • 9. Vantagem Algoritmo de ordenação de simples implementação e fácil entendimento utilizando chamadas recursivas.
  • 10. Desvantagem Alto consumo de memória, devido a série de chamadas recursivas.
  • 11. Código em C void mergesort(int begin, int end) for(i = begin;i <= end;i++) { { int left = 0, right = 0, middle if(right > end || = 0; (left <= middle && A[left] <= int i = 0; A[right])) { if(begin == end) B[i] = return; A[left]; left++; middle = (begin + end)/2; } else mergesort(begin,middle); { mergesort(middle + 1,end); B[i] = A[right]; right++; left = begin; } right = middle + 1; } for(i = begin;i <= end;i++) A[i] = B[i]; }
  • 13. Quicksort (Rápido) • Método de ordenação muito rápido e eficiente, inventado por C.A.R. Hoare em 1960. • Foi criado para tentar traduzir um dicionário de inglês para russo, ordenando as palavras. • O Quicksort é um algoritmo de ordenação por comparação não-estável.
  • 14. Como funciona? O Quicksort adota a estratégia de divisão e conquista que consiste em rearranjar as chaves de modo que as chaves "menores" precedam as chaves "maiores".
  • 15. C++ #include <algorithm> #include <iterator> #include <functional> using namespace std; template <typename T> void sort(T begin, T end) { if (begin != end) { T middle = partition (begin, end, bind2nd(less<iterator_traits<T>::value_type>(), *begin)); sort (begin, middle); sort (max(begin + 1, middle), end); } }