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
的示例: