21 lines
315 B
C
21 lines
315 B
C
|
|
void locate(float xx[], unsigned long n, float x, unsigned long *j)
|
|
{
|
|
unsigned long ju,jm,jl;
|
|
int ascnd;
|
|
|
|
jl=0;
|
|
ju=n+1;
|
|
ascnd=(xx[n] >= xx[1]);
|
|
while (ju-jl > 1) {
|
|
jm=(ju+jl) >> 1;
|
|
if (x >= xx[jm] == ascnd)
|
|
jl=jm;
|
|
else
|
|
ju=jm;
|
|
}
|
|
if (x == xx[1]) *j=1;
|
|
else if(x == xx[n]) *j=n-1;
|
|
else *j=jl;
|
|
}
|