shellsort, sobre o valor de h
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? :(
Discussão (1)
Carregando comentários...