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;             
                      }
        }                     
  }
}