/* shellsort.c */

#include "shellsort.h"

/*
	shellsort adapted from Harbison & Steele, Fourth Ed., p.246
	modified to use doubles, unneeded parens removed
*/

void shellsort (double v[], int n)
{
	int gap, i, j;
	double temp;
	
	gap = 1;
	do gap = 3*gap +1; while (gap <= n);
	for (gap/=3; gap>0; gap/=3)
		for (i=gap; i<n; ++i) {
			temp = v[i];
			for (j=i-gap; j>=0 && v[j]>temp; j-=gap)
				v[j+gap] = v[j];
			v[j+gap] = temp;
		}
}
