我正在为大学作业编写二进制搜索方法,虽然我觉得这是正确的做法,但我觉得运行时间比它应该的要长.. 有人看到这有什么错误吗?iterator
是一个自定义类,没有什么花哨的,可以满足您的期望。vec
是一个迭代器向量,它指向一个更大的链接列表,其中包含我“真正”搜索的内容
iterator searchVec(const I& item)
{
int left = 0;
int right = (int)vec.size()-1;
int mid = (right+left)/2;
while(*vec.at(left) != *vec.at(right)){
mid = (right+left)/2;
if (mid == 0 || mid == vec.size()-1){
//nothign else to search, we didnt find anything
return *vec.end();
}
if (*vec.at(mid) == item){
return vec.at(mid);
}
else if (item > *vec.at(mid)){
left = mid;
}
else if (item < *vec.at(mid)){
right = mid;
}
}
return vec.at(mid);
}