Faculdade de Tecnologia de     Presidente PrudenteAlgorítmo de Ordenação                  Análise e Desenvolvimento de Sis...
O que é?  Algoritmo que coloca os elementos de umadada sequência em uma certa ordem onde asmais usadas são a numérica e a ...
Lexigráfica   Analisa a entrada de linhas de caracteres eproduz uma seqüência chamada de "símbolosléxicos" (lexical tokens...
Shellsort  (Diminuição de incrementos)• Criado por Donald Shell em 1959, publicado  pela Universidade de Cincinnati.• Mais...
Código em Cvoid shellSort(int * vet, int size) {  int i , j , value;  int gap = 1;  do {     gap = 3*gap+1;  } while(gap <...
Exemplo de execuçãoDado o vetor de entrada: 12, 43, 1, 6, 56, 23, 52, 9             12, 43, 1, 6, 56, 23, 52, 9           ...
Mergesort                   (Fusão)• É um exemplo de algoritmo de ordenação do tipo  dividir-para-conquistar.• Criar uma s...
Vantagem  Algoritmo de ordenação de simplesimplementação e fácil entendimento utilizandochamadas recursivas.
Desvantagem  Alto consumo de memória, devido a série dechamadas recursivas.
Código em Cvoid mergesort(int begin, int end)        for(i = begin;i <= end;i++){                                         ...
Quicksort                 (Rápido)• Método de ordenação muito rápido e  eficiente, inventado por C.A.R. Hoare em  1960.• F...
Como funciona?  O Quicksort adota a estratégia de divisão econquista que consiste em rearranjar as chavesde modo que as ch...
C++#include <algorithm>#include <iterator>#include <functional>using namespace std;template <typename T>void sort(T begin,...
Algorítimo de ordenação
Algorítimo de ordenação
Algorítimo de ordenação
Algorítimo de ordenação
Próximos SlideShares
Carregando em…5
×

Algorítimo de ordenação

935 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
935
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
42
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Algorítimo de ordenação

  1. 1. Faculdade de Tecnologia de Presidente PrudenteAlgorítmo de Ordenação Análise e Desenvolvimento de Sistemas 3º Módulo
  2. 2. O que é? Algoritmo que coloca os elementos de umadada sequência em uma certa ordem onde asmais usadas são a numérica e a lexicográfica.
  3. 3. Lexigráfica Analisa a entrada de linhas de caracteres eproduz uma seqüência chamada de "símbolosléxicos" (lexical tokens), ou somente "símbolos"(tokens).
  4. 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. 5. Código em Cvoid 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. 6. Exemplo de execuçãoDado 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.
  7. 7. 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.
  8. 8. Vantagem Algoritmo de ordenação de simplesimplementação e fácil entendimento utilizandochamadas recursivas.
  9. 9. Desvantagem Alto consumo de memória, devido a série dechamadas recursivas.
  10. 10. Código em Cvoid 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]; }
  11. 11. 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.
  12. 12. Como funciona? O Quicksort adota a estratégia de divisão econquista que consiste em rearranjar as chavesde modo que as chaves "menores" precedam aschaves "maiores".
  13. 13. 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); }}

×