大学の課題で二分探索法を書いていますが、これは正しい方法だと思いますが、実行時間が本来よりも長いように感じます..誰かがこれに間違いを見ていますか? 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);
}