hunt.cpp

来自「7种插值算法的c++代码实现」· C++ 代码 · 共 52 行

CPP
52
字号
void hunt(double xx[], int n,double x, int& jlo)
{
	int lhi,inc,jm;
    int ascnd = xx[n] > xx[1];
    if( (jlo<= 0 )|| (jlo > n)) 
	{
        jlo = 0;
        lhi = n + 1;
        goto loop3;
	}
    inc= 1;
    if( (x >= xx[jlo] )&& ascnd )
	{
		loop1:   lhi = jlo + inc;
		if (lhi > n )
			lhi= n + 1;
		else 
			if ((x >= xx[lhi] )&& ascnd )
			{
				jlo= lhi;
				inc = inc + inc;
				goto loop1;
			}
	}
    else
	{
		lhi = jlo;
		loop2:   jlo = lhi - inc;
		if (jlo < 1 )
			jlo = 0;
		else 
		{
			if((x < xx[jlo] )&& ascnd )
			{
				lhi = jlo;
				inc = inc + inc;
				goto loop2;
			}
		}
     
    }
    loop3:  if(( lhi - jlo) == 1 )
			    return;
   	jm = (lhi + jlo)/ 2;
	if( (x > xx[jm] )&& ascnd)
		jlo= jm;
	else
		lhi = jm;
	goto loop3;
}

⌨️ 快捷键说明

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