您的位置:首页 > 其它

调试一个二分查找的例子

2005-08-03 15:45 218 查看
#include "stdafx.h"
#include <vector>
#include <iostream>
int bsearch(std::vector<int> vec , int x)
{
int low ,high ;
low = 0 ;
high = vec.size() -1 ;
int mid =0 ;

while(low <=high)
{
mid = (low +high ) /2;
//if find x then break
if(vec[mid] == x) break;
//if x is greater than the mid value , assign the mid+1 to low
else if (x > vec[mid])
low = mid +1 ;
else
high = mid -1;
}
if(low <= high)
return mid;
else
return -1;

}

int main(int argc, char* argv[])
{
std::vector<int> vec ;

for(int i=0 ;i< 10;i++)
{
vec.push_back(i);
}
int ret = 0;
ret = bsearch(vec ,5);
std::cout<<"is 5 in vector "<< (ret== -1? "true":"false")<<"postion index:"<<ret <<std::endl;
ret = bsearch(vec ,11);
std::cout<<"is 11 in vector "<<(ret== -1? "true":"false")<<" position index:"<<ret <<std::endl;

return 0;
}
说明:程序使用了vector 存储数组,主要是方便取到数组长度
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: