Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 二进制搜索函数-输出比较数,即使在数组中找不到该数_C++_Binary Search - Fatal编程技术网

C++ 二进制搜索函数-输出比较数,即使在数组中找不到该数

C++ 二进制搜索函数-输出比较数,即使在数组中找不到该数,c++,binary-search,C++,Binary Search,下面的代码用于对排序数组执行二进制搜索,然后返回查找用户输入值所需的比较次数 int binarySearch(int arr[], int numelems, int value) { int first = 0, last = numelems - 1, middle, position = -1; bool found = false; int count = 0; while (!found && f

下面的代码用于对排序数组执行二进制搜索,然后返回查找用户输入值所需的比较次数

int binarySearch(int arr[], int numelems, int value)
    {
        int first = 0, last = numelems - 1, middle, position = -1;
        bool found = false;
        int count = 0;
        while (!found && first <= last)
        {

            middle = (first + last) / 2;
            if (arr[middle] == value)
            {
                found = true;
                position = middle;
                count++;
            }
            else if (arr[middle] > value)
            {
                last = middle - 1;
                count++;
            }
            else
            {
                first = middle + 1;
                count++;
            }
        }
        return count;
    }
不知怎的,我不太明白怎么做。。。 我试图在while循环之外添加if语句,如下所示

int binarySearch(int arr[], int numelems, int value)
{
    int first = 0, last = numelems - 1, middle, position = -1;
    bool found = false;
    int count = 0;
    while (!found && first <= last)
    {
        middle = (first + last) / 2;
        if (arr[middle] == value)
        {
            found = true;
            position = middle;
            count++;
        }
        else if (arr[middle] > value)
        {
            last = middle - 1;
            count++;
        }
        else if (arr[middle] < value)
        {
            first = middle + 1;
            count++;
        }
    }
    if (found = false)
    {
        cout << "Value not found.";
    }
    return count;
}
int二进制搜索(int-arr[],int-numelems,int-value)
{
int first=0,last=numelems-1,middle,position=-1;
bool-found=false;
整数计数=0;
while(!找到第一个值(&F)
{
最后=中间-1;
计数++;
}
else if(arr[中间]<值)
{
第一个=中间+1;
计数++;
}
}
如果(发现=错误)
{

cout您只需在返回之前添加一个
if
语句,如:

    if (!found)
    {
        cout << "The value " << value << " not found.\n";
    }
if(!found)
{

cout您只需在返回之前添加一个
if
语句,如:

    if (!found)
    {
        cout << "The value " << value << " not found.\n";
    }
if(!found)
{

无法将所有代码以明文形式发布。我们无法查看图像,也无法从中复制代码。您可以在搜索函数中生成输出,或者让函数返回两个值(迭代次数,以及是否找到值)。post的答案解释了从函数返回多个值的几种方法。请以明文形式发布所有代码。我们无法看到图像,也无法从中复制代码。您可以在搜索函数中生成输出,或者让函数返回两个值(有多少次迭代,以及它是否找到了值)。post的答案解释了从函数返回多个值的几种方法。下面是一个使用
std::pair
的示例:下面是一个使用
std::pair
的示例: