Files
2025-02-Numerical/lib/nr/k_and_r/recipes/shell.c
2025-09-12 18:55:25 +09:00

27 lines
327 B
C

void shell(n,a)
float a[];
unsigned long n;
{
unsigned long i,j,inc;
float v;
inc=1;
do {
inc *= 3;
inc++;
} while (inc <= n);
do {
inc /= 3;
for (i=inc+1;i<=n;i++) {
v=a[i];
j=i;
while (a[j-inc] > v) {
a[j]=a[j-inc];
j -= inc;
if (j <= inc) break;
}
a[j]=v;
}
} while (inc > 1);
}