shell.cpp

来自「工程算法 这是一个很有用的工程数值算法集锦」· C++ 代码 · 共 35 行

CPP
35
字号
void shell(int n, double arr[])
{
    double t,aln2i = 1.442695;
	double tiny = 0.00001;
    int nn,k,l,m,j,i,lognb2,done;
	lognb2= int(log(double(n)) * aln2i + tiny);
    m = n;
    for (nn = 1; nn<=lognb2; nn++)
	{
        m = int(m / 2);
        k = n - m;
        for (j = 1; j<=k; j++)
		{
            i = j;
            do
			{
				done = -1;
				l = i + m;
				if (arr[l] < arr[i])
				{
					t = arr[i];
					arr[i] = arr[l];
					arr[l] = t;
					i = i - m;
					if (i >= 1)
					{
						done = 0;
					}
				}
            }while(!done);
        }
    }
}

⌨️ 快捷键说明

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