Luthien 0 Denunciar post Postado Dezembro 6, 2014 Um algoritmo de shellsort opera como algoritmo de inserção quando h = 1, mas ele não é estável. Tenho q provar isso com exemplos mas estou com duvidas void Shellsort(TipoItem A[], int n){ int h = 1, i j; TipoItem x; do{ h = h*3+1; }while(h<n); do{ h = 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 = j - h; if(j<=h) break; } A[j] = x; } }while(h != 1); } } se eu quiser ordenar a palavra PERIODO, tenho q n = 7, meu h vai ser 13 e ao dividi-lo por 3, será 4 mas na próxima vez em q eu for dividir será 1 e eu entro no laço pela ultima vez, certo? Mas vi alguns exemplos na internet q o h vai de 4 para 2 e dps para 1. Onde estou errando? :( Compartilhar este post Link para o post Compartilhar em outros sites
GBecker 51 Denunciar post Postado Dezembro 30, 2014 O "h" pode receber qualquer valor. Foi comprovado que com os valores obtidos pela fórmula "3h+1", resultam na melhor eficiencia do algorítimo. Compartilhar este post Link para o post Compartilhar em outros sites