/*  tssort.c    CCMATH mathematics library source code.
 *
 *  Copyright (C)  2000   Daniel A. Atkinson    All rights reserved.
 *  This code may be redistributed under the terms of the GNU library
 *  public license (LGPL). ( See the lgpl.license file for details.)
 * ------------------------------------------------------------------------
 */
/*
    Test:  ssort  dubcmp

    Uses:  unfl  surand

    Input parameter:  n -> integer: size of sort list
*/
#include "ccmath.h"
double *x,**v;
void main(int na,char **av)
{ int i,n;
  if(na!=2){ printf("para: size\n"); exit(-1);}
  n=atoi(*++av); setunfl(123456789);
  x=(double *)calloc(n,sizeof(double));
  v=(double **)calloc(n,sizeof(double *));
  printf("     Test of Shell Sort\n");
  printf("  %d points input\n",n);
/* generate sort list of random values */
  for(i=0; i<n ;) x[i++]=unfl();

/* initialize pointer array */
  for(i=0; i<n ;++i) v[i]=x+i;

/* sort pointer array */
  ssort((void *)v,n,dubcmp);

  printf(" input series    sorted series\n");
  for(i=0; i<n ;++i)
    printf("   %7.3f          %7.3f\n",x[i],*v[i]);
}
/*  Test output

     Test of Shell Sort
  25 points input
 input series    sorted series
     0.550            0.009
     0.071            0.071
     0.905            0.139
     0.779            0.152
     0.009            0.209
     0.688            0.311
     0.152            0.328
     0.209            0.379
     0.757            0.416
     0.838            0.418
     0.790            0.493
     0.493            0.550
     0.931            0.688
     0.963            0.716
     0.311            0.757
     0.418            0.779
     0.821            0.790
     0.379            0.809
     0.416            0.821
     0.920            0.838
     0.861            0.861
     0.139            0.905
     0.328            0.920
     0.716            0.931
     0.809            0.963
*/


syntax highlighted by Code2HTML, v. 0.9.1