分治法里的三分搜索算法

做法是:它先将待查元素x与n/3处的元素比较,然后将x与2n/3处的元素进行比较。比较的结果或者找到x,或者将搜索范围缩小为原来的n/3。请编写c++程序实现算法。数组序列为:1 2 5 7 9 11 (数组存储从下标为0处开始。)
然后按照提示输入:待搜索元素的值。若数组序列中搜索该元素成功,则输出该匹配元素的下标。若搜索失败,输出-1。
样例输入1
7
样例输出1
3
样例输入2
8
样例输出2
-1


#include <iostream>

int func(int* data, int start, int end, int dst)
{
    if (start == end){
        return -1;
    }
    //1/3
    int index = (end - start) / 3 + start;
    if (*(data + index) == dst){
        return index;
    }
    else if(*(data + index) > dst){
        return func(data, start, index, dst);
    }
    else{
        start = index + 1;
    }
    //2/3
    index = (end - start) / 2 + start;
    if (*(data + index) == dst) {
        return index;
    }
    else if (*(data + index) > dst) {
        return func(data, start, index, dst);
    }
    else {
        return func(data, index + 1, end, dst);
    }
}

int main()
{
    int data[] = {1, 3, 5, 7, 9, 11};
    std::cout << func(data, 0, sizeof(data) / sizeof(int), 7) << std::endl;
    std::cout << func(data, 0, sizeof(data) / sizeof(int), 3) << std::endl;
    std::cout << func(data, 0, sizeof(data) / sizeof(int), 8) << std::endl;
    std::cout << func(data, 0, sizeof(data) / sizeof(int), 11) << std::endl;
    return 0;
}