SlideShare uma empresa Scribd logo
3
Mais lidos
4
Mais lidos
6
Mais lidos
ShellsortAnderson 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 adjacentesPior caso: fazer n-1 trocasJá O Shell faz trocas a uma certa distância (que diminui a cada passada)Levar, mais rápido, para o ponto corretoComo 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?
ExemploO   R   D   E   N   Ah = 4h = 2h = 1
FuncionamentoRNADEORDANEORADENO623451AORDENh = 4h = 2h = 1Vetor 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 lugaresA ú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.Os melhoresresultadosforamobtidosusando a sequência de Knuth:(1, 4, 13, 40, 121, 364, 1093)Comece com h = 1Obtenhaumasequencia de númerosusandoh = 3*h + 11, 4, 13, 40, 121, 364, 1093Pare quandoh for maiorque o tamanho do array e use o últimonumeroobtido.Para se obter a sequenciaemordemdecrescenteparaaplicaraoalgoritmo, use a fórmulainversaaonumeroobtido:h = (h – 1) / 3Como 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:

Mais conteúdo relacionado

PPTX
Shell sort
PDF
Algoritmo Shell Sort
PPTX
Algoritmos de ordenação
PDF
Estrutura de dados
PPTX
Shell exposición
PPT
3.3 shell sort
PPT
Heap sort
PPT
Shell sort
Shell sort
Algoritmo Shell Sort
Algoritmos de ordenação
Estrutura de dados
Shell exposición
3.3 shell sort
Heap sort
Shell sort

Mais procurados (20)

PPTX
AI Greedy and A-STAR Search
PDF
Selection Sort
PDF
Aritmetica Modular
PPT
Quick Sort
PPTX
Shellshort ppt
PDF
Searching and Sorting Techniques in Data Structure
PPT
how to calclute time complexity of algortihm
PDF
Análise de desempenho de algoritmos de ordenação
PPTX
Disjoint sets union, find
PDF
Estrutura de Dados - Grafos
PPTX
Priority Queue in Data Structure
PPTX
Divide and conquer - Quick sort
PDF
Aula sobre Tabela Hash
PPT
Linguagem C clecioamerico
PPTX
01 php - introdução ao php
PDF
Java orientação a objetos (variaveis de instancia e metodos)
PPT
Shell sort
DOCX
Metodos de-ordenamiento
PDF
Process Scheduling in OS
PPTX
Algoritmo por seleccion
AI Greedy and A-STAR Search
Selection Sort
Aritmetica Modular
Quick Sort
Shellshort ppt
Searching and Sorting Techniques in Data Structure
how to calclute time complexity of algortihm
Análise de desempenho de algoritmos de ordenação
Disjoint sets union, find
Estrutura de Dados - Grafos
Priority Queue in Data Structure
Divide and conquer - Quick sort
Aula sobre Tabela Hash
Linguagem C clecioamerico
01 php - introdução ao php
Java orientação a objetos (variaveis de instancia e metodos)
Shell sort
Metodos de-ordenamiento
Process Scheduling in OS
Algoritmo por seleccion
Anúncio

Destaque (7)

PDF
métodos ordenação C, bolha, selection sort e insertion sort
DOC
Trabalho métodos de ordenação
PDF
Metodos de ordenação estrutura de dados
DOC
Complexidade de algoritmos insertion, selection e bubble sort.
PDF
ordenacao shellsort quicksort em C
PDF
Análise empírica de algoritmos de ordenação
PDF
Insertion Sort
métodos ordenação C, bolha, selection sort e insertion sort
Trabalho métodos de ordenação
Metodos de ordenação estrutura de dados
Complexidade de algoritmos insertion, selection e bubble sort.
ordenacao shellsort quicksort em C
Análise empírica de algoritmos de ordenação
Insertion Sort
Anúncio

Semelhante a ShellSort - Ordenação (20)

PDF
shellsort.pdf
PDF
Tutorial aed iii 001 - algoritmo de ordenação shellsort
PDF
Tutorial aed iii 002 - algoritmo de ordenação shellsort
DOC
Aula3 ordpesq
PDF
7082 texto do artigo-33807-2-10-20180903
PDF
Metodos de ordenação em c#
PDF
Aula 1 - Ordenação Interna - Seleção e Inserção.pdf
DOCX
Aulas de estrutura de dados por Ayrton Yagami
PPTX
Algorítimo de ordenação
ODT
Eda trabalho seleção.docx_0
PDF
Tutorial aed iii 008 - algoritmo de ordenação heapsort
PDF
Tutorial aed iii 003 - algoritmo de ordenação shellsort
DOCX
2 referencial teorico
PPTX
PDF
Ordenação
PDF
Comparação Experimental de Algoritmos de Ordenação
PPT
Apresentação1
PDF
Métodos de ordenação sorting-intro.pdf
PDF
Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)
PPT
Gnome Sort
shellsort.pdf
Tutorial aed iii 001 - algoritmo de ordenação shellsort
Tutorial aed iii 002 - algoritmo de ordenação shellsort
Aula3 ordpesq
7082 texto do artigo-33807-2-10-20180903
Metodos de ordenação em c#
Aula 1 - Ordenação Interna - Seleção e Inserção.pdf
Aulas de estrutura de dados por Ayrton Yagami
Algorítimo de ordenação
Eda trabalho seleção.docx_0
Tutorial aed iii 008 - algoritmo de ordenação heapsort
Tutorial aed iii 003 - algoritmo de ordenação shellsort
2 referencial teorico
Ordenação
Comparação Experimental de Algoritmos de Ordenação
Apresentação1
Métodos de ordenação sorting-intro.pdf
Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)
Gnome Sort

Mais de Anderson Zardo (20)

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

ShellSort - Ordenação

  • 1. ShellsortAnderson 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 adjacentesPior caso: fazer n-1 trocasJá O Shell faz trocas a uma certa distância (que diminui a cada passada)Levar, mais rápido, para o ponto corretoComo 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. ExemploO R D E N Ah = 4h = 2h = 1
  • 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 lugaresA última passada (h=1) corresponde ao algoritmo de inserção, mas apenas trocas locais serão executadas.Entendendo
  • 8. Ninguemdescobriuatéhoje a sequenciaperfeitaparautilizaçãonestecaso, váriasforamestudadas.Os melhoresresultadosforamobtidosusando a sequência de Knuth:(1, 4, 13, 40, 121, 364, 1093)Comece com h = 1Obtenhaumasequencia de númerosusandoh = 3*h + 11, 4, 13, 40, 121, 364, 1093Pare quandoh for maiorque o tamanho do array e use o últimonumeroobtido.Para se obter a sequenciaemordemdecrescenteparaaplicaraoalgoritmo, use a fórmulainversaaonumeroobtido:h = (h – 1) / 3Como Obter H:
  • 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: