二分法实现(循环 + 递归)

该方法适用于  有序序列  的查找

1、二分法循环实现

int FindN2(const int* a, int N, int Num)
{
int s = 0;
int e = N-1;
int m = 0;
if((a == NULL) || (N <= 0))
return -1;
else
{
while(e >= s)
{
m = (s + e) >> 1;
if(Num > a[m])
s = m + 1;
else if(Num < a[m])
e = m - 1;
else
return m;
}
}
return -1;
}
2、二分法递归实现
int FindN3(int* a, int s, int e, int data)
{
int m = (s + e) / 2;
if(s > e)
return -1;
else if(data < a[m])
{
FindN3(a, s, m-1, data);
}
else if(data > a[m])
{
FindN3(a, m+1,e, data);
}
else
return m;




}

你可能感兴趣的:(查找算法)