/*  thsort.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:  hsort  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 Heap Sort\n");
/* generate series of random values */
  for(i=0; i<n ;) x[i++]=unfl();
  printf("  %d points input\n",n);

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

/* sort pointer array */
  hsort((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 Heap 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