二分查找法

55 阅读1分钟
#include <vector>
#include <iostream>

using namespace std;

int myfind(vector<int> & vec, int start, int end, int target) {
    if (start > end) {
        return -1;
    }
    int mid = start + (end - start) / 2;
    if (target == vec[mid]) {
        return mid;
    }else if (target < vec[mid]) {
        return myfind(vec, start, mid - 1, target);
    } else if (target > vec[mid]){
        return myfind(vec, mid + 1, end, target);
    }
}

int main() {
    vector<int> vec{1,2,4,7};
    int ret = myfind(vec, 0, 4, 7);
    cout << ret << endl;
    return 0;
}