写正确函数需要注意的地方:二分查找
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;
}
相关文章推荐
- 写正确程序需要注意的地方:一个数组是有一个递减数列座椅若干位形成的,在这种数组中查找某一个数。
- 写正确函数需要注意的地方:两个序列a,b,大小都为n,序列元素的值为任意整数,无序;要求通过交换a,b中的元素,使序列a元素的和与序列b元素的和之间的差最小
- 写正确函数需要注意的地方:最长递减子序列
- 写正确函数需要注意的地方:翻转句子中单词的顺序。
- 写正确函数需要注意的地方:链表的及时终止冒泡排序
- 写正确函数需要注意的地方:最大堆的创建与堆排序
- 写正确函数需要注意的地方:strstr
- 写正确函数需要注意的地方:链表的逆转,递归与非递归
- 写正确函数需要注意的地方:二叉树非递归中序遍历
- 写正确函数需要注意的地方:输入两个整数n和m,从数列1,2,3,...n中随意取几个数,使其和为m,列出所有可能组合
- 写正确函数需要注意的地方:在字符串中找出连续最长的数字串,并把这个串的长度返回
- 写正确函数需要注意的地方:int转char*, char* 转int。
- 写正确函数需要注意的地方:快速排序
- 写正确函数需要注意的地方:两个有序链表的合并
- 二分查找,要注意的地方--写一个正确的二分查找,并不简单
- 写正确函数需要注意的地方:子数组的最大和
- 写正确函数需要注意的地方:给定一个十进制整数N,计算从1开始到N的所有整数出现的“1”的个数
- 写正确函数需要注意的地方:奇偶数分开,左边偶数,右边奇数。
- 写正确函数需要注意的地方:快速返回斐波那契数的第n项
- 写正确函数需要注意的地方:链表的合并排序