您的位置:首页 > 其它

准确实现二分查找方法

2014-12-10 11:29 323 查看
准确实现二分查找方法

准确写出二分查找法很重要,因为其中有许多地方容易出错。

主要有下面几点:

right初始值为num-1;
每次更新right=middle-1;
每次更新middle为left+((right-left)>>1); 注意使用移位,以及移位运算符加括号!

正确的程序如下:

#include<iostream>
using namespace std;

int isFinded(int *a, int num, int value)
{
int left=0, right=num-1;
int middle;

while(left<=right)
{
middle=left+((right-left)>>1);
if(a[middle] < value)
left=middle+1;
else if(a[middle] > value)
right=middle-1;
else
return middle;  //返回找到的位置
}

return -1;  //没找到
}

int main()
{
int a[5]={1, 3, 5, 7, 9};
int num=5;
int value=5;

int finded=isFinded(a, num, value);

cout<<finded<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: