SlideShare uma empresa Scribd logo
1 de 9
Desenvolvido por: Felipe Weizenmann
Conceito 
 Shell Sort é um algoritmo de ordenação eficiente. 
Um algoritmo simples de entender; 
 Relativamente rápido de processar; 
 Fácil de implementar.
Histórico 
 Criado em 1959; 
 Desenvolvido por Donald Shell; 
 Publicado pela Universidade de Cincinnati;
Funcionamento 
Ele divide um grande vetor de dados em vetores 
menores, ordenando-os e fazendo isso novamente para ter 
um único vetor ordenado e então trabalhar em cima dele, 
que seria mais prático e rápido; 
O algoritmo de Shell Sort em si mesmo não ordena 
nada, mas aumenta a eficiência de outros algoritmos de 
ordenação (como o da inserção e seleção).
Princípios Básicos 
O Shell Sort se baseia em uma variável chamada 
de incremento de sequência, que é dado por h e ao 
decorrer da execução do algoritmo, é 
decrementada até 1. 
 Utilizando o incremento de sequência, o algoritmo 
compara elementos distantes em um vetor, em vez 
de comparar com o próximo.
Vantagens 
 Shellsort é uma ótima opção para arquivos de 
tamanho moderado; 
 Sua implementação é simples e requer uma 
quantidade de código pequena.
Desvantagens 
O tempo de execução do algoritmo é sensível à 
ordem inicial do arquivo; 
O método é instável.
Análise 
A complexidade do algoritmo ainda não é 
conhecida; 
 Ninguém ainda foi capaz de encontrar uma 
fórmula fechada para sua função de 
complexidade; 
A sua análise contém alguns problemas 
matemáticos muito difíceis 
Exemplo: escolher a sequência de 
incrementos. 
O que se sabe é que cada incremento não deve 
ser múltiplo do anterior.
Código-fonte 
 // ShellSort - com incrementos de Shell 
 template <class Comparable> 
 void ShellSort(vector<Comparable> &vec) 
 { 
 int j; 
 for (int gap = vec.size()/2; gap > 0; gap /= 2) 
 for (int i = gap; i < vec.size(); i++) 
 { 
 Comparable tmp = vec[i]; 
 for (j = i; j>gap && tmp<vec[j-gap]; j -= gap) 
 vec[j] = vec[j-gap]; 
 vec[j] = tmp; 
 } 
 }

Mais conteúdo relacionado

Mais procurados

Conjunto de instruções mips - introdução
Conjunto de instruções mips - introduçãoConjunto de instruções mips - introdução
Conjunto de instruções mips - introdução
Elaine Cecília Gatto
 

Mais procurados (20)

Bubble Sort
Bubble SortBubble Sort
Bubble Sort
 
Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - Apresentação
 
Introdução a Arquitetura de Sistemas
Introdução a Arquitetura de SistemasIntrodução a Arquitetura de Sistemas
Introdução a Arquitetura de Sistemas
 
Apresentação-Resumo sobre o Java Swing.
Apresentação-Resumo sobre o Java Swing.Apresentação-Resumo sobre o Java Swing.
Apresentação-Resumo sobre o Java Swing.
 
A função SE: O que é e como usá-la.
A função SE: O que é e como usá-la.A função SE: O que é e como usá-la.
A função SE: O que é e como usá-la.
 
Windows e seus aplicativos
Windows e seus aplicativosWindows e seus aplicativos
Windows e seus aplicativos
 
Functional Programming by Examples using Haskell
Functional Programming by Examples using HaskellFunctional Programming by Examples using Haskell
Functional Programming by Examples using Haskell
 
Conjunto de instruções mips - introdução
Conjunto de instruções mips - introduçãoConjunto de instruções mips - introdução
Conjunto de instruções mips - introdução
 
Pilhas e Filas.ppt
Pilhas e Filas.pptPilhas e Filas.ppt
Pilhas e Filas.ppt
 
Análise empírica de algoritmos de ordenação
Análise empírica de algoritmos de ordenaçãoAnálise empírica de algoritmos de ordenação
Análise empírica de algoritmos de ordenação
 
Naive String Matching Algorithm | Computer Science
Naive String Matching Algorithm | Computer ScienceNaive String Matching Algorithm | Computer Science
Naive String Matching Algorithm | Computer Science
 
HeapSort
HeapSortHeapSort
HeapSort
 
Comparação Experimental de Algoritmos de Ordenação
Comparação Experimental de Algoritmos de OrdenaçãoComparação Experimental de Algoritmos de Ordenação
Comparação Experimental de Algoritmos de Ordenação
 
Interface grafica
Interface graficaInterface grafica
Interface grafica
 
Linguagem C - Vetores
Linguagem C - VetoresLinguagem C - Vetores
Linguagem C - Vetores
 
Generating parsers using Ragel and Lemon
Generating parsers using Ragel and LemonGenerating parsers using Ragel and Lemon
Generating parsers using Ragel and Lemon
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação C
 
Aula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e Programação
 
Analise de Requisitos Software
Analise de Requisitos SoftwareAnalise de Requisitos Software
Analise de Requisitos Software
 
Simulado da prova lpi 101
Simulado da prova lpi 101Simulado da prova lpi 101
Simulado da prova lpi 101
 

Destaque (18)

Shell sort[1]
Shell sort[1]Shell sort[1]
Shell sort[1]
 
Shell sort slide
Shell sort slideShell sort slide
Shell sort slide
 
Shell sort
Shell sortShell sort
Shell sort
 
Shell sort in Data Structure Using C
Shell sort in Data Structure Using CShell sort in Data Structure Using C
Shell sort in Data Structure Using C
 
Shell sort
Shell sortShell sort
Shell sort
 
3.3 shell sort
3.3 shell sort3.3 shell sort
3.3 shell sort
 
Shell sort
Shell sortShell sort
Shell sort
 
ordenacao shellsort quicksort em C
ordenacao shellsort quicksort em Cordenacao shellsort quicksort em C
ordenacao shellsort quicksort em C
 
Insertion Sort
Insertion SortInsertion Sort
Insertion Sort
 
Shellsort
ShellsortShellsort
Shellsort
 
Selection Sort
Selection SortSelection Sort
Selection Sort
 
métodos ordenação C, bolha, selection sort e insertion sort
métodos ordenação C, bolha, selection sort e insertion sortmétodos ordenação C, bolha, selection sort e insertion sort
métodos ordenação C, bolha, selection sort e insertion sort
 
Merge sort
Merge sortMerge sort
Merge sort
 
Merge sort code in C explained
Merge sort code in C explained Merge sort code in C explained
Merge sort code in C explained
 
Radix sorting
Radix sortingRadix sorting
Radix sorting
 
Presentation-Merge Sort
Presentation-Merge SortPresentation-Merge Sort
Presentation-Merge Sort
 
Radix Sort
Radix SortRadix Sort
Radix Sort
 
Merge sort
Merge sortMerge sort
Merge sort
 

Semelhante a Shell sort

Trabalho métodos de ordenação
Trabalho métodos de ordenaçãoTrabalho métodos de ordenação
Trabalho métodos de ordenação
Daiana de Ávila
 
Aula3 ordpesq
Aula3 ordpesqAula3 ordpesq
Aula3 ordpesq
reneegt
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Domingos Teruel
 
Introdução a testes automatizados
Introdução a testes automatizadosIntrodução a testes automatizados
Introdução a testes automatizados
Thiago Ghisi
 

Semelhante a Shell sort (20)

Trabalho métodos de ordenação
Trabalho métodos de ordenaçãoTrabalho métodos de ordenação
Trabalho métodos de ordenação
 
Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)
Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)
Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)
 
Aula3 ordpesq
Aula3 ordpesqAula3 ordpesq
Aula3 ordpesq
 
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
 
Cakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudouCakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudou
 
Test-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netTest-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.net
 
TDD (Resumo)
TDD (Resumo)TDD (Resumo)
TDD (Resumo)
 
1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software
 
Testes de Sofware
Testes de SofwareTestes de Sofware
Testes de Sofware
 
Introdução a testes de software utilizando selenium
Introdução a testes de software utilizando seleniumIntrodução a testes de software utilizando selenium
Introdução a testes de software utilizando selenium
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
 
Minicurso de TDD
Minicurso de TDDMinicurso de TDD
Minicurso de TDD
 
Paletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojoPaletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojo
 
Introdução a testes automatizados
Introdução a testes automatizadosIntrodução a testes automatizados
Introdução a testes automatizados
 
PHPUnit e teste de software
PHPUnit e teste de softwarePHPUnit e teste de software
PHPUnit e teste de software
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnit
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Refatoração
RefatoraçãoRefatoração
Refatoração
 
Linguagem Java- Iniciação à programação Java
Linguagem Java- Iniciação à programação JavaLinguagem Java- Iniciação à programação Java
Linguagem Java- Iniciação à programação Java
 
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
 

Mais de Felipe Weizenmann

Mais de Felipe Weizenmann (14)

Processadores
ProcessadoresProcessadores
Processadores
 
Engenharia de requisitos
Engenharia de requisitosEngenharia de requisitos
Engenharia de requisitos
 
Biomassa
BiomassaBiomassa
Biomassa
 
Energia solar
Energia solarEnergia solar
Energia solar
 
Internet + Hackers e Crackers + Lojas Virtuais
Internet + Hackers e Crackers + Lojas VirtuaisInternet + Hackers e Crackers + Lojas Virtuais
Internet + Hackers e Crackers + Lojas Virtuais
 
Placa mãe modelo giga byte ga ep41 ud3l
Placa mãe modelo giga byte ga ep41 ud3lPlaca mãe modelo giga byte ga ep41 ud3l
Placa mãe modelo giga byte ga ep41 ud3l
 
Protocolos- SMTP, POP3 e IMAP4
Protocolos- SMTP, POP3 e IMAP4Protocolos- SMTP, POP3 e IMAP4
Protocolos- SMTP, POP3 e IMAP4
 
Redes ATM- Redes de Computadores
Redes ATM- Redes de ComputadoresRedes ATM- Redes de Computadores
Redes ATM- Redes de Computadores
 
Servidores de E-mail
Servidores de E-mailServidores de E-mail
Servidores de E-mail
 
Açúcar: Produção e Comercialização
Açúcar: Produção e ComercializaçãoAçúcar: Produção e Comercialização
Açúcar: Produção e Comercialização
 
Quilombos orig.
Quilombos  orig.Quilombos  orig.
Quilombos orig.
 
Topologia modelo arvore
Topologia modelo arvoreTopologia modelo arvore
Topologia modelo arvore
 
Open source
Open sourceOpen source
Open source
 
Camadas de enlace de dados
Camadas de enlace de dadosCamadas de enlace de dados
Camadas de enlace de dados
 

Shell sort

  • 2. Conceito  Shell Sort é um algoritmo de ordenação eficiente. Um algoritmo simples de entender;  Relativamente rápido de processar;  Fácil de implementar.
  • 3. Histórico  Criado em 1959;  Desenvolvido por Donald Shell;  Publicado pela Universidade de Cincinnati;
  • 4. Funcionamento Ele divide um grande vetor de dados em vetores menores, ordenando-os e fazendo isso novamente para ter um único vetor ordenado e então trabalhar em cima dele, que seria mais prático e rápido; O algoritmo de Shell Sort em si mesmo não ordena nada, mas aumenta a eficiência de outros algoritmos de ordenação (como o da inserção e seleção).
  • 5. Princípios Básicos O Shell Sort se baseia em uma variável chamada de incremento de sequência, que é dado por h e ao decorrer da execução do algoritmo, é decrementada até 1.  Utilizando o incremento de sequência, o algoritmo compara elementos distantes em um vetor, em vez de comparar com o próximo.
  • 6. Vantagens  Shellsort é uma ótima opção para arquivos de tamanho moderado;  Sua implementação é simples e requer uma quantidade de código pequena.
  • 7. Desvantagens O tempo de execução do algoritmo é sensível à ordem inicial do arquivo; O método é instável.
  • 8. Análise A complexidade do algoritmo ainda não é conhecida;  Ninguém ainda foi capaz de encontrar uma fórmula fechada para sua função de complexidade; A sua análise contém alguns problemas matemáticos muito difíceis Exemplo: escolher a sequência de incrementos. O que se sabe é que cada incremento não deve ser múltiplo do anterior.
  • 9. Código-fonte  // ShellSort - com incrementos de Shell  template <class Comparable>  void ShellSort(vector<Comparable> &vec)  {  int j;  for (int gap = vec.size()/2; gap > 0; gap /= 2)  for (int i = gap; i < vec.size(); i++)  {  Comparable tmp = vec[i];  for (j = i; j>gap && tmp<vec[j-gap]; j -= gap)  vec[j] = vec[j-gap];  vec[j] = tmp;  }  }

Notas do Editor

  1. ninguem
  2. Felipe 2.6
  3. Augusto 3.5
  4. Bruno sorry 4.9
  5. augusto
  6. felipe
  7. Bruno g 7.8
  8. Bruno g
  9. Bruno sorry