Es el algoritmo de ordenamiento shell, pero todos los ejemplos que encuentro en Internet en C, son un verdadero desastre :c...
(solo necesito el algoritmo todo lo extra lo agregare yo)
Código Pseudocodigo:
Ver original
h = 1 while h < n, h = 3*h + 1 while h > 0, h = h / 3 for k = 1:h, insertion sort a[k:h:n] → invariant: each h-sub-array is sorted end
Bueno... después de unos días encontré la respuesta... la dejo por si alguien la necesita:
Código C:
Ver original
void shellSort(int * vet, int size) { int i , j , value; int gap = 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); }