Professional Documents
Culture Documents
ShellSort
Proposto por Shell em 1959. uma extenso do algoritmo de ordenao por insero. Problema com o algoritmo de ordenao por insero:
Troca itens adjacentes para determinar o ponto de insero. So efetuadas n - 1 comparaes e movimentaes quando o menor item est na posio mais direita no vetor.
O mtodo de Shell contorna este problema permitindo trocas de registros distantes um do outro.
Algoritmos e Estrutura de Dados II
ShellSort
Os itens separados de h posies so rearranjados. Todo h-simo item leva a uma seqncia ordenada. Tal seqncia dita estar h-ordenada.
Exemplo
O R D E N A
h=4 h=2 h=1
ShellSort
Exemplo de utilizao:
ShellSort
Como escolher o valor de h: Seqncia para h: h(s) = 1, para s = 1
ShellSort
Como escolher o valor de h: Seqncia para h: h(s) = 1, para s = 1 h(s) = 3h(s - 1) + 1, para s > 1
ShellSort
Como escolher o valor de h: Seqncia para h: h(s) = 1, para s = 1 h(s) = 3h(s - 1) + 1, para s > 1
A seqncia para h corresponde a 1, 4, 13, 40, 121, 364, 1.093, 3.280, ... Knuth (1973, p. 95) mostrou experimentalmente que esta seqncia difcil de ser batida por mais de 20% em eficincia.
Algoritmos e Estrutura de Dados II
ShellSort
void Shellsort (Item *A, Indice *n) { int i, j; int h = 1; Item x; do h = h * 3 + 1; while (h < *n); do { h /= 3; for (i = h + 1; i <= *n; i++) { x = A[i]; j = i; while (A[j h].Chave > x.Chave) { A[j] = A[j h]; j -= h; if (j <= h) break; } A[j] = x; } } while (h != 1); }
Algoritmos e Estrutura de Dados II
ShellSort
A implementao do Shellsort no utiliza registros sentinelas. Seriam necessrios h registros sentinelas, uma para cada h-ordenao.
ShellSort
Anlise A razo da eficincia do algoritmo ainda no conhecida. Ningum ainda foi capaz de analisar o algoritmo. A sua anlise contm alguns problemas matemticos muito difceis. A comear pela prpria seqncia de incrementos. O que se sabe que cada incremento no deve ser mltiplo do anterior.
Algoritmos e Estrutura de Dados II
ShellSort
Anlise
ShellSort
Vantagens:
Shellsort uma tima opo para arquivos de tamanho moderado. Sua implementao simples e requer uma quantidade de cdigo pequena.
Desvantagens:
O tempo de execuo do algoritmo sensvel ordem inicial do arquivo. O mtodo no estvel,
Algoritmos e Estrutura de Dados II