/* This software was developed by Bruce Hendrickson and Robert Leland   *
 * at Sandia National Laboratories under US Department of Energy        *
 * contract DE-AC04-76DP00789 and is copyrighted by Sandia Corporation. */


/* Sort a double array using Shell's method. Modified algorithm
   from p. 245, Numerical Recipies (changed float to double). */

void      shell_sort(n, arr)
double    arr[];
int       n;
{
    int       nn, m, j, i;
    double    t;

    m = n;
    for (nn = 1; nn <= n; nn <<= 1) {
	m >>= 1;
	for (j = m + 1; j <= n; j++) {
	    i = j - m;
	    t = arr[j];
	    while (i >= 1 && arr[i] > t) {
		arr[i + m] = arr[i];
		i -= m;
	    }
	    arr[i + m] = t;
	}
    }
}


syntax highlighted by Code2HTML, v. 0.9.1