您的位置:首页 > 其它

写正确函数需要注意的地方:二分查找

2012-08-11 22:07 411 查看
//正确的算法
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  search 算法
相关文章推荐