codice:
void sh_sort(float *A, int n){
int current, previous, inc, j, k, x, inserted;
inc = n;
while (inc>1){
inc = inc / 2;
for (j=1; j<=inc-1; j++){
k = j + inc;
while(k<=n){
inserted = 0; // non entrerà mai nel while...
x = A[k];
current = k;
previous = current - inc;
while(previous>=j && inserted==1){ // <-- questo while
if (x<A[previous]){
A[current] = A[previous];
current = previous;
previous = previous - inc;
} else {
inserted = 1;
}
}
A[current] = x;
k = k + inc;
}
}
}
}
codice:
float *shellsort(float *f, int n)
{
int i, j, p;
float x;
p = n/2;
while (p>0)
{
for (i = 0; i < n; i++)
{
j = i;
x = f[i];
while ((j >= p) && (f[j-p] > x))
{
f[j] = f[j-p];
j = j - p;
}
f[j] = x;
}
p = p/2;
}
return f;
}