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

Inserindo em Ordem Crescente na Lista Encadeada
Inserindo em Ordem Crescente na Lista EncadeadaInserindo em Ordem Crescente na Lista Encadeada
Inserindo em Ordem Crescente na Lista EncadeadaElaine Cecília Gatto
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisFabrício Lopes Sanchez
 
Лекция 4. Префиксные деревья (Tries, prefix trees)
Лекция 4. Префиксные деревья (Tries, prefix trees)Лекция 4. Префиксные деревья (Tries, prefix trees)
Лекция 4. Префиксные деревья (Tries, prefix trees)Mikhail Kurnosov
 
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
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScriptBruno Catão
 
5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane Fidelix
5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane Fidelix5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane Fidelix
5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane FidelixCris Fidelix
 
Algoritmos de ordenação - heapsort
Algoritmos de ordenação - heapsortAlgoritmos de ordenação - heapsort
Algoritmos de ordenação - heapsortBruno Bitencourt Luiz
 
Listas duplamente encadeadas
Listas duplamente encadeadasListas duplamente encadeadas
Listas duplamente encadeadasJailson Torquato
 
Лекция 5: B-деревья (B-trees, k-way merge sort)
Лекция 5: B-деревья (B-trees, k-way merge sort)Лекция 5: B-деревья (B-trees, k-way merge sort)
Лекция 5: B-деревья (B-trees, k-way merge sort)Mikhail Kurnosov
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na práticaRafael Cassau
 
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
 

Mais procurados (20)

Aula sobre Tabela Hash
Aula sobre Tabela HashAula sobre Tabela Hash
Aula sobre Tabela Hash
 
Algoritmo recursivo
Algoritmo recursivoAlgoritmo recursivo
Algoritmo recursivo
 
Inserindo em Ordem Crescente na Lista Encadeada
Inserindo em Ordem Crescente na Lista EncadeadaInserindo em Ordem Crescente na Lista Encadeada
Inserindo em Ordem Crescente na Lista Encadeada
 
Estrutura de dados em Java - Recursividade
Estrutura de dados em Java - RecursividadeEstrutura de dados em Java - Recursividade
Estrutura de dados em Java - Recursividade
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
 
Лекция 4. Префиксные деревья (Tries, prefix trees)
Лекция 4. Префиксные деревья (Tries, prefix trees)Лекция 4. Префиксные деревья (Tries, prefix trees)
Лекция 4. Префиксные деревья (Tries, prefix trees)
 
Algoritmo 06 - Array e Matrizes
Algoritmo 06 - Array e MatrizesAlgoritmo 06 - Array e Matrizes
Algoritmo 06 - Array e Matrizes
 
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
 
Queues
Queues Queues
Queues
 
Tabela Hash
Tabela HashTabela Hash
Tabela Hash
 
Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane Fidelix
5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane Fidelix5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane Fidelix
5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane Fidelix
 
Algoritmos de ordenação - heapsort
Algoritmos de ordenação - heapsortAlgoritmos de ordenação - heapsort
Algoritmos de ordenação - heapsort
 
Listas duplamente encadeadas
Listas duplamente encadeadasListas duplamente encadeadas
Listas duplamente encadeadas
 
Лекция 5: B-деревья (B-trees, k-way merge sort)
Лекция 5: B-деревья (B-trees, k-way merge sort)Лекция 5: B-деревья (B-trees, k-way merge sort)
Лекция 5: B-деревья (B-trees, k-way merge sort)
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na prática
 
HeapSort
HeapSortHeapSort
HeapSort
 
Trabalho métodos de ordenação
Trabalho métodos de ordenaçãoTrabalho métodos de ordenação
Trabalho métodos de ordenação
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 

Destaque (19)

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
 
Bubble Sort
Bubble SortBubble Sort
Bubble Sort
 
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: algoritmo de ordenação eficiente e simples

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
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesCamilo Ribeiro
 

Semelhante a Shell Sort: algoritmo de ordenação eficiente e simples (20)

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
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 

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