Se metto una qualsiasi sequenza lui mi ritorna la sequenza così come gliel'ho passata.
A array di float
n numero el. array
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;
x = A[k];
current = k;
previous = current - inc;
while(previous>=j && inserted==1){
if (x<A[previous]){
A[current] = A[previous];
current = previous;
previous = previous - inc;
} else {
inserted = 1;
}
}
A[current] = x;
k = k + inc;
}
}
}
}