C   21

shell.c

Guest on 15th January 2022 05:05:26 AM

  1. #include <math.h>
  2.  
  3. #define ALN2I 1.442695022
  4. #define TINY 1.0e-5
  5.  
  6. void shell(n,arr)
  7. float arr[];
  8. int n;
  9. {
  10.         int nn,m,j,i,lognb2;
  11.         float t;
  12.  
  13.         lognb2=(log((double) n)*ALN2I+TINY);
  14.         m=n;
  15.         for (nn=1;nn<=lognb2;nn++) {
  16.                 m >>= 1;
  17.                 for (j=m+1;j<=n;j++) {
  18.                         i=j-m;
  19.                         t=arr[j];
  20.                         while (i >= 1 && arr[i] > t) {
  21.                                 arr[i+m]=arr[i];
  22.                                 i -= m;
  23.                         }
  24.                         arr[i+m]=t;
  25.                 }
  26.         }
  27. }
  28.  
  29. #undef ALN2I
  30. #undef TINY

Raw Paste


Login or Register to edit or fork this paste. It's free.