
typedef int itemType;
int shellsort (itemType *a,int l,int r)
{
  int i;
  int j;
  int h;
  int k;
  itemType v;
  int incs[16]={1391376,463792,198768,86961,33936,13776,4592,1968,861,336,112,48,21,7,3,1};
  for (k = 0; k<16; k++)
    for ((h = incs[k],i = (l+h)); i<=r; i++)
      {
        v = a[i];
        j = i;
        while ((j>h)&&(a[j-h]>v))
          {
            a[j] = a[j-h];
            j-=h;
          }
        a[j] = v;
      }
}

