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

Estrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas EstáticasEstrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas EstáticasLeinylson Fontinele
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADLeinylson Fontinele
 
Memory map
Memory mapMemory map
Memory mapaviban
 
DER - Diagrama de Entidade e Relacionamentos
DER - Diagrama de Entidade e RelacionamentosDER - Diagrama de Entidade e Relacionamentos
DER - Diagrama de Entidade e RelacionamentosCláudio Amaral
 
Curso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosCurso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosLeonardo Melo Santos
 
Data Structures- Part4 basic sorting algorithms
Data Structures- Part4 basic sorting algorithmsData Structures- Part4 basic sorting algorithms
Data Structures- Part4 basic sorting algorithmsAbdullah Al-hazmy
 
Java básico - Módulo 04: Estruturas de controle
Java   básico - Módulo 04:  Estruturas de controleJava   básico - Módulo 04:  Estruturas de controle
Java básico - Módulo 04: Estruturas de controleProfessor Samuel Ribeiro
 
Java exception handling ppt
Java exception handling pptJava exception handling ppt
Java exception handling pptJavabynataraJ
 
Semana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetoresSemana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetoresPedro Valente
 

Mais procurados (20)

Shell sort
Shell sortShell sort
Shell sort
 
Shell sort
Shell sortShell sort
Shell sort
 
Linguagem C - Funções
Linguagem C - FunçõesLinguagem C - Funções
Linguagem C - Funções
 
Shell sort[1]
Shell sort[1]Shell sort[1]
Shell sort[1]
 
Estrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas EstáticasEstrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas Estáticas
 
Shell sort
Shell sortShell sort
Shell sort
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
 
Curso de Java: Threads
Curso de Java: ThreadsCurso de Java: Threads
Curso de Java: Threads
 
Selection Sort
Selection SortSelection Sort
Selection Sort
 
Memory map
Memory mapMemory map
Memory map
 
DER - Diagrama de Entidade e Relacionamentos
DER - Diagrama de Entidade e RelacionamentosDER - Diagrama de Entidade e Relacionamentos
DER - Diagrama de Entidade e Relacionamentos
 
Stack project
Stack projectStack project
Stack project
 
Curso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosCurso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetos
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Data Structures- Part4 basic sorting algorithms
Data Structures- Part4 basic sorting algorithmsData Structures- Part4 basic sorting algorithms
Data Structures- Part4 basic sorting algorithms
 
Java básico - Módulo 04: Estruturas de controle
Java   básico - Módulo 04:  Estruturas de controleJava   básico - Módulo 04:  Estruturas de controle
Java básico - Módulo 04: Estruturas de controle
 
Ext filesystem4
Ext filesystem4Ext filesystem4
Ext filesystem4
 
Java exception handling ppt
Java exception handling pptJava exception handling ppt
Java exception handling ppt
 
Aula 09 instalação de hardware
Aula 09 instalação de hardwareAula 09 instalação de hardware
Aula 09 instalação de hardware
 
Semana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetoresSemana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetores
 

Destaque (14)

Shell sort slide
Shell sort slideShell sort slide
Shell sort slide
 
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
 
3.3 shell sort
3.3 shell sort3.3 shell sort
3.3 shell sort
 
ordenacao shellsort quicksort em C
ordenacao shellsort quicksort em Cordenacao shellsort quicksort em C
ordenacao shellsort quicksort em C
 
Bubble Sort
Bubble SortBubble Sort
Bubble Sort
 
Insertion Sort
Insertion SortInsertion Sort
Insertion Sort
 
Shellsort
ShellsortShellsort
Shellsort
 
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: algoritmo de ordenação eficiente e simples

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
 
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)Leinylson Fontinele
 
Aula3 ordpesq
Aula3 ordpesqAula3 ordpesq
Aula3 ordpesqreneegt
 
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
 
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.netRenato Groff
 
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 softwareHeider Lopes
 
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 seleniumSandy Maciel
 
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 PHPUnitDomingos Teruel
 
Paletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojoPaletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojoflavio1110
 
Introdução a testes automatizados
Introdução a testes automatizadosIntrodução a testes automatizados
Introdução a testes automatizadosThiago Ghisi
 
PHPUnit e teste de software
PHPUnit e teste de softwarePHPUnit e teste de software
PHPUnit e teste de softwarericardophp
 
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 PHPUnitDiego Tremper
 
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
 

Semelhante a Shell Sort: algoritmo de ordenação eficiente e simples (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: algoritmo de ordenação eficiente e simples

  • 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