SlideShare una empresa de Scribd logo
1 de 11
Shellsort Anderson Zardo | Jean Carlo Soares
Criado por Donald Shell (daí o nome Shell) em 1959, publicado pela Universidade de Cincinnati. Como surgiu?
Shellsort é derivado do Algoritmo de Inserção. Inserção apenas faz trocas adjacentes Pior caso: fazer n-1 trocas Já O Shell faz trocas a uma certa distância (que diminui a cada passada) Levar, mais rápido, para o ponto correto Como funciona?
Primeiro compara elementos separados por “h”  posições e os rearranja. Após progressivamente, vai diminuindo a distância de comparação (h) até que h=1 (correspondente ao algorítmo de inserção). Como funciona?
Exemplo O   R   D   E   N   A h = 4 h = 2 h = 1
Funcionamento R N A D E O R D A N E O R A D E N O 6 2 3 4 5 1 A O R D E N h = 4 h = 2 h = 1 Vetor Ordenado
Na primeira passada (h=4), o item O é comparado com N (posições 1 e 5) e trocados. O item R é a seguir comparado e trocado com A (posições 2 e 6) Na segunda passada (h=2), N, D e O, nas posições 1, 3 e 5 são rearrumados para resultar em D, N e O nestas mesmas posições; da mesma forma, A, E e R, nas posições 2, 4 e 6 são comparados e mantidos nos seus lugares A última passada  (h=1) corresponde ao algoritmo de inserção, mas apenas trocas locais serão executadas. Entendendo
Ninguemdescobriuatéhoje a sequenciaperfeitaparautilizaçãonestecaso, váriasforamestudadas. ,[object Object],Comece com h = 1 Obtenhaumasequencia de númerosusandoh = 3*h + 1 1, 4, 13, 40, 121, 364, 1093 Pare quandoh for maiorque o tamanho do array e use o últimonumeroobtido. Para se obter a sequenciaemordemdecrescenteparaaplicaraoalgoritmo, use a fórmulainversaaonumeroobtido:h = (h – 1) / 3 Como Obter H:
Velocidade: em sequencias moderadas é mais rápido que outros métodos, mas o método da Inserção é o mais interessante para arquivos pequenos (até 20 elementos). Caso a ordenação inicial da sequência seja decrescente ou aleatória, a ordem de grandeza permanece praticamente a mesma. Aplicação: O método Shellsort é o escolhido pela maioria das aplicações por ser muito eficiente para arquivos de até 10000 registros, Implementação simples e quantidade pequena de código, Porém não é um método estável. Comparando à outros médotos
voidshellSort(int * vet, intsize) {   int i , j , value; intgap = 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); } Código de Exemplo:
voidshellsort (int x[], int limite) { int i, j, t, h;   limite--;   h = 1;   do {       h = 3 * h + 1;   } while (h < limite); while (h > 0) {       for (i = h; i <= limite; i++) {           t = x[i];           for (j = i - h; ((j >= 0) && (x[j] > t)); j = j - h)             x[j + h] = x[j];           x[j + h] = t;       }       h /= 3;     } } Código de Exemplo II:

Más contenido relacionado

La actualidad más candente

Lec 17 heap data structure
Lec 17 heap data structureLec 17 heap data structure
Lec 17 heap data structure
Sajid Marwat
 
9 big o-notation
9 big o-notation9 big o-notation
9 big o-notation
irdginfo
 

La actualidad más candente (20)

Array ADT(Abstract Data Type)|Data Structure
Array ADT(Abstract Data Type)|Data StructureArray ADT(Abstract Data Type)|Data Structure
Array ADT(Abstract Data Type)|Data Structure
 
Big O Notation
Big O NotationBig O Notation
Big O Notation
 
algorithms and flow chart overview.pdf
algorithms and flow chart overview.pdfalgorithms and flow chart overview.pdf
algorithms and flow chart overview.pdf
 
Estrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas EncadeadasEstrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas Encadeadas
 
Sorting And Type of Sorting
Sorting And Type of SortingSorting And Type of Sorting
Sorting And Type of Sorting
 
Data Structure: Algorithm and analysis
Data Structure: Algorithm and analysisData Structure: Algorithm and analysis
Data Structure: Algorithm and analysis
 
Best,worst,average case .17581556 045
Best,worst,average case .17581556 045Best,worst,average case .17581556 045
Best,worst,average case .17581556 045
 
Sorting Algorithms
Sorting AlgorithmsSorting Algorithms
Sorting Algorithms
 
Shell sort[1]
Shell sort[1]Shell sort[1]
Shell sort[1]
 
Algoritmos de ordenação
Algoritmos de ordenaçãoAlgoritmos de ordenação
Algoritmos de ordenação
 
ALGOL ailesi programlama dilleri
ALGOL ailesi programlama dilleriALGOL ailesi programlama dilleri
ALGOL ailesi programlama dilleri
 
Breadth First Search & Depth First Search
Breadth First Search & Depth First SearchBreadth First Search & Depth First Search
Breadth First Search & Depth First Search
 
Lec 17 heap data structure
Lec 17 heap data structureLec 17 heap data structure
Lec 17 heap data structure
 
Insertion sort bubble sort selection sort
Insertion sort bubble sort  selection sortInsertion sort bubble sort  selection sort
Insertion sort bubble sort selection sort
 
9 big o-notation
9 big o-notation9 big o-notation
9 big o-notation
 
Algorithm big o
Algorithm big oAlgorithm big o
Algorithm big o
 
Linguagem C 09 Ponteiros
Linguagem C 09 PonteirosLinguagem C 09 Ponteiros
Linguagem C 09 Ponteiros
 
Primality
PrimalityPrimality
Primality
 
2. Array in Data Structure
2. Array in Data Structure2. Array in Data Structure
2. Array in Data Structure
 
Searching and Sorting Techniques in Data Structure
Searching and Sorting Techniques in Data StructureSearching and Sorting Techniques in Data Structure
Searching and Sorting Techniques in Data Structure
 

Destacado (8)

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
 
Trabalho métodos de ordenação
Trabalho métodos de ordenaçãoTrabalho métodos de ordenação
Trabalho métodos de ordenação
 
Metodos de ordenação estrutura de dados
Metodos de ordenação   estrutura de dadosMetodos de ordenação   estrutura de dados
Metodos de ordenação estrutura de dados
 
Complexidade de algoritmos insertion, selection e bubble sort.
Complexidade de algoritmos insertion, selection e bubble sort.Complexidade de algoritmos insertion, selection e bubble sort.
Complexidade de algoritmos insertion, selection e bubble sort.
 
ordenacao shellsort quicksort em C
ordenacao shellsort quicksort em Cordenacao shellsort quicksort em C
ordenacao shellsort quicksort em C
 
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
 
Insertion Sort
Insertion SortInsertion Sort
Insertion Sort
 
3.3 shell sort
3.3 shell sort3.3 shell sort
3.3 shell sort
 

Similar a ShellSort - Ordenação

Algoritmo de ordenação heapsort.
Algoritmo de ordenação heapsort.Algoritmo de ordenação heapsort.
Algoritmo de ordenação heapsort.
Thaci Santos
 
Tutorial aed iii 008 - algoritmo de ordenação heapsort
Tutorial aed iii   008 - algoritmo de ordenação heapsortTutorial aed iii   008 - algoritmo de ordenação heapsort
Tutorial aed iii 008 - algoritmo de ordenação heapsort
Flávio Freitas
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmos
Ricardo Bolanho
 
Programando em python recursao
Programando em python   recursaoProgramando em python   recursao
Programando em python recursao
samuelthiago
 

Similar a ShellSort - Ordenação (20)

shellsort.pdf
shellsort.pdfshellsort.pdf
shellsort.pdf
 
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
 
Algoritmo de ordenação heapsort.
Algoritmo de ordenação heapsort.Algoritmo de ordenação heapsort.
Algoritmo de ordenação heapsort.
 
Algoritmo0
Algoritmo0Algoritmo0
Algoritmo0
 
Tutorial aed iii 008 - algoritmo de ordenação heapsort
Tutorial aed iii   008 - algoritmo de ordenação heapsortTutorial aed iii   008 - algoritmo de ordenação heapsort
Tutorial aed iii 008 - algoritmo de ordenação heapsort
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmos
 
EDA_Aula_09_Complexidade_2021.1.pdf
EDA_Aula_09_Complexidade_2021.1.pdfEDA_Aula_09_Complexidade_2021.1.pdf
EDA_Aula_09_Complexidade_2021.1.pdf
 
Math
MathMath
Math
 
Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04
 
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
 
Aula_07_Complexidade_de_Algoritmos.ppt
Aula_07_Complexidade_de_Algoritmos.pptAula_07_Complexidade_de_Algoritmos.ppt
Aula_07_Complexidade_de_Algoritmos.ppt
 
Aula_07_Complexidade_de_Algoritmos (1).ppt
Aula_07_Complexidade_de_Algoritmos (1).pptAula_07_Complexidade_de_Algoritmos (1).ppt
Aula_07_Complexidade_de_Algoritmos (1).ppt
 
Aula 1 a 15 vol1
Aula 1 a 15 vol1Aula 1 a 15 vol1
Aula 1 a 15 vol1
 
Análise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeAnálise de Algoritmos - Recursividade
Análise de Algoritmos - Recursividade
 
Aula2
Aula2Aula2
Aula2
 
Haskell
HaskellHaskell
Haskell
 
Programando em python recursao
Programando em python   recursaoProgramando em python   recursao
Programando em python recursao
 
Pequeno teorema de fermat
Pequeno teorema de fermatPequeno teorema de fermat
Pequeno teorema de fermat
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando C
 

Más de Anderson Zardo

Trabalho tolerância a falhas e recuperação de desastres
Trabalho tolerância a falhas e recuperação de desastresTrabalho tolerância a falhas e recuperação de desastres
Trabalho tolerância a falhas e recuperação de desastres
Anderson Zardo
 
Trabalho de gerenciamento de usuários
Trabalho de gerenciamento de usuáriosTrabalho de gerenciamento de usuários
Trabalho de gerenciamento de usuários
Anderson Zardo
 
Software proprietário e livre
Software proprietário e livreSoftware proprietário e livre
Software proprietário e livre
Anderson Zardo
 
Sistemas especialistas
Sistemas especialistasSistemas especialistas
Sistemas especialistas
Anderson Zardo
 
Fibra ótica cabeamento estruturado
Fibra ótica cabeamento estruturadoFibra ótica cabeamento estruturado
Fibra ótica cabeamento estruturado
Anderson Zardo
 
Aspectos positivos e negativos da virtualizaçã1
Aspectos positivos e negativos da virtualizaçã1Aspectos positivos e negativos da virtualizaçã1
Aspectos positivos e negativos da virtualizaçã1
Anderson Zardo
 
Artigo o mundo inspirado por julio verne
Artigo   o mundo inspirado por julio verneArtigo   o mundo inspirado por julio verne
Artigo o mundo inspirado por julio verne
Anderson Zardo
 
Anderson zardo principais componentes do cabeamento estruturado
Anderson zardo   principais componentes do cabeamento estruturadoAnderson zardo   principais componentes do cabeamento estruturado
Anderson zardo principais componentes do cabeamento estruturado
Anderson Zardo
 
Anderson zardo artigo sub-sistemas do cabeamento estruturado - cópia
Anderson zardo   artigo sub-sistemas do cabeamento estruturado - cópiaAnderson zardo   artigo sub-sistemas do cabeamento estruturado - cópia
Anderson zardo artigo sub-sistemas do cabeamento estruturado - cópia
Anderson Zardo
 
Anderson zardo artigo sobre cabeamento estruturado
Anderson zardo   artigo sobre cabeamento estruturadoAnderson zardo   artigo sobre cabeamento estruturado
Anderson zardo artigo sobre cabeamento estruturado
Anderson Zardo
 
Anderson zardo artigo fibra ótica no cabeamento estruturado
Anderson zardo   artigo fibra ótica no cabeamento estruturadoAnderson zardo   artigo fibra ótica no cabeamento estruturado
Anderson zardo artigo fibra ótica no cabeamento estruturado
Anderson Zardo
 

Más de Anderson Zardo (20)

VLAN - Conceitos Básicos
VLAN - Conceitos BásicosVLAN - Conceitos Básicos
VLAN - Conceitos Básicos
 
Balanced Scorecard
Balanced ScorecardBalanced Scorecard
Balanced Scorecard
 
Gerenciamento da disponibilidade itil
Gerenciamento da disponibilidade   itilGerenciamento da disponibilidade   itil
Gerenciamento da disponibilidade itil
 
Engenharia Social - A arte de enganar
Engenharia Social - A arte de enganarEngenharia Social - A arte de enganar
Engenharia Social - A arte de enganar
 
Manual de consulta rápido de PL/SQL
Manual de consulta rápido de PL/SQLManual de consulta rápido de PL/SQL
Manual de consulta rápido de PL/SQL
 
Mini política de Segurança da Informação - Análise de Riscos
Mini política de Segurança da Informação - Análise de RiscosMini política de Segurança da Informação - Análise de Riscos
Mini política de Segurança da Informação - Análise de Riscos
 
Trabalho frame relay
Trabalho frame relayTrabalho frame relay
Trabalho frame relay
 
Trabalho tolerância a falhas e recuperação de desastres
Trabalho tolerância a falhas e recuperação de desastresTrabalho tolerância a falhas e recuperação de desastres
Trabalho tolerância a falhas e recuperação de desastres
 
Trabalho de gerenciamento de usuários
Trabalho de gerenciamento de usuáriosTrabalho de gerenciamento de usuários
Trabalho de gerenciamento de usuários
 
Trabalho acl
Trabalho aclTrabalho acl
Trabalho acl
 
Software proprietário e livre
Software proprietário e livreSoftware proprietário e livre
Software proprietário e livre
 
Sistemas especialistas
Sistemas especialistasSistemas especialistas
Sistemas especialistas
 
Resumo transistor
Resumo transistorResumo transistor
Resumo transistor
 
Fibra ótica cabeamento estruturado
Fibra ótica cabeamento estruturadoFibra ótica cabeamento estruturado
Fibra ótica cabeamento estruturado
 
Aspectos positivos e negativos da virtualizaçã1
Aspectos positivos e negativos da virtualizaçã1Aspectos positivos e negativos da virtualizaçã1
Aspectos positivos e negativos da virtualizaçã1
 
Artigo o mundo inspirado por julio verne
Artigo   o mundo inspirado por julio verneArtigo   o mundo inspirado por julio verne
Artigo o mundo inspirado por julio verne
 
Anderson zardo principais componentes do cabeamento estruturado
Anderson zardo   principais componentes do cabeamento estruturadoAnderson zardo   principais componentes do cabeamento estruturado
Anderson zardo principais componentes do cabeamento estruturado
 
Anderson zardo artigo sub-sistemas do cabeamento estruturado - cópia
Anderson zardo   artigo sub-sistemas do cabeamento estruturado - cópiaAnderson zardo   artigo sub-sistemas do cabeamento estruturado - cópia
Anderson zardo artigo sub-sistemas do cabeamento estruturado - cópia
 
Anderson zardo artigo sobre cabeamento estruturado
Anderson zardo   artigo sobre cabeamento estruturadoAnderson zardo   artigo sobre cabeamento estruturado
Anderson zardo artigo sobre cabeamento estruturado
 
Anderson zardo artigo fibra ótica no cabeamento estruturado
Anderson zardo   artigo fibra ótica no cabeamento estruturadoAnderson zardo   artigo fibra ótica no cabeamento estruturado
Anderson zardo artigo fibra ótica no cabeamento estruturado
 

ShellSort - Ordenação

  • 1. Shellsort Anderson Zardo | Jean Carlo Soares
  • 2. Criado por Donald Shell (daí o nome Shell) em 1959, publicado pela Universidade de Cincinnati. Como surgiu?
  • 3. Shellsort é derivado do Algoritmo de Inserção. Inserção apenas faz trocas adjacentes Pior caso: fazer n-1 trocas Já O Shell faz trocas a uma certa distância (que diminui a cada passada) Levar, mais rápido, para o ponto correto Como funciona?
  • 4. Primeiro compara elementos separados por “h” posições e os rearranja. Após progressivamente, vai diminuindo a distância de comparação (h) até que h=1 (correspondente ao algorítmo de inserção). Como funciona?
  • 5. Exemplo O R D E N A h = 4 h = 2 h = 1
  • 6. Funcionamento R N A D E O R D A N E O R A D E N O 6 2 3 4 5 1 A O R D E N h = 4 h = 2 h = 1 Vetor Ordenado
  • 7. Na primeira passada (h=4), o item O é comparado com N (posições 1 e 5) e trocados. O item R é a seguir comparado e trocado com A (posições 2 e 6) Na segunda passada (h=2), N, D e O, nas posições 1, 3 e 5 são rearrumados para resultar em D, N e O nestas mesmas posições; da mesma forma, A, E e R, nas posições 2, 4 e 6 são comparados e mantidos nos seus lugares A última passada (h=1) corresponde ao algoritmo de inserção, mas apenas trocas locais serão executadas. Entendendo
  • 8.
  • 9. Velocidade: em sequencias moderadas é mais rápido que outros métodos, mas o método da Inserção é o mais interessante para arquivos pequenos (até 20 elementos). Caso a ordenação inicial da sequência seja decrescente ou aleatória, a ordem de grandeza permanece praticamente a mesma. Aplicação: O método Shellsort é o escolhido pela maioria das aplicações por ser muito eficiente para arquivos de até 10000 registros, Implementação simples e quantidade pequena de código, Porém não é um método estável. Comparando à outros médotos
  • 10. voidshellSort(int * vet, intsize) { int i , j , value; intgap = 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); } Código de Exemplo:
  • 11. voidshellsort (int x[], int limite) { int i, j, t, h; limite--; h = 1; do { h = 3 * h + 1; } while (h < limite); while (h > 0) { for (i = h; i <= limite; i++) { t = x[i]; for (j = i - h; ((j >= 0) && (x[j] > t)); j = j - h) x[j + h] = x[j]; x[j + h] = t; } h /= 3; } } Código de Exemplo II: