Algorítimo de ordenação
Upcoming SlideShare
Loading in...5
×
 

Algorítimo de ordenação

on

  • 809 views

 

Statistics

Views

Total Views
809
Views on SlideShare
809
Embed Views
0

Actions

Likes
0
Downloads
28
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Algorítimo de ordenação Algorítimo de ordenação Presentation Transcript

  • Faculdade de Tecnologia de Presidente PrudenteAlgorítmo de Ordenação Análise e Desenvolvimento de Sistemas 3º Módulo
  • 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.
  • 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).
  • 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 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);}
  • 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.
  • 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 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++){ { 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]; }
  • 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 econquista que consiste em rearranjar as chavesde modo que as chaves "menores" precedam aschaves "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); }}