shell.c

来自「Numerical Recipes 是国际公认的高水平的、关于数值计算的书」· C语言 代码 · 共 31 行

C
31
字号
#include <math.h>

#define ALN2I 1.442695022
#define TINY 1.0e-5

void shell(n,arr)
float arr[];
int n;
{
	int nn,m,j,i,lognb2;
	float t;

	lognb2=(log((double) n)*ALN2I+TINY);
	m=n;
	for (nn=1;nn<=lognb2;nn++) {
		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;
		}
	}
}

#undef ALN2I
#undef TINY

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?