//正确的算法
template<typename V>
int my_binary_search(vector<V> array, V v)
{
int left=0;
int right=array.size()-1;
int middle;
while (left<=right)//为了使得最后的right能够被判断到。
{
middle=(left+right)/2;
if (array[middle]==v)
{
return middle;
}
else if (array[middle]>v)
{
right=middle-1;
}
else
{
left=middle+1;
}
}
return -1;
}
1. 循环结束标志为left<=right。为了使得最后的right能够被判断到。
//寡人的错误代码
template<typename V>
int my_binary_search(vector<V> array, V v)
{
int left=0;
int right=array.size()-1;
int middle;
while (left<=right)
{
middle=(left+right)/2;
if (array[middle]==v)
{
return middle;
}
else if (array[middle]>v)
{
right=middle-1;
}
else
{
left=middle+1;
}
}
return -1;
}