二分查找写对了的确不容易!!!!!试试才知道!!!
难怪1946年得出的算法到1962年才有人写对。往往当程序循环能终止时可以高效的得到正确值,但程序中可能包含死循环。
int BinaryDiv(int *a, int l, int h, int val)
{
for(; ;)
{
if(l > h) return -1;
m = (l+h)/2;
if(a[m] == val)
{
return m;
}
else if(a[m] > val)
{
h = m -1;
}
else
{
l = m + 1;
}
}
}