递归和迭代是编程中的基本思想。这里通过递归和迭代实现二分查询。
template<class T>
int BinarySearchRecursion(T data[],T element,int start,int end)
{
if(start < 0 || start > end)
{
return -1;
}
int mid = (start+end)/2;
if(element == data[mid])
{
return mid;
}
else if(element > data[mid])
{
return BinarySearchRecursion(data,element,mid+1,end);
}
else
{
return BinarySearchRecursion(data,element,start,mid-1);
}
}
template<class T>
int BinarySearchNotRecursion(T data[],T element,int start,int end)
{
if(start < 0 || start > end)
{
return -1;
}
do
{
int mid = (start+end)/2;
if(element == data[mid])
{
return mid;
}
else if(element > data[mid])
{
start = mid+1;
}
else
{
end = mid-1;
}
}while(start<=end);
return -1;
}