0

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

1 に答える 1