【发布时间】:2022-01-08 00:14:51
【问题描述】:
给定一个整数和一个排序的整数数组,编写一个名为binary_search 的二分查找函数,该函数打印执行二分查找的比较次数。该函数应采用 3 个参数:
- 搜索的号码,
- 整数数组,以及
- 数组中的元素数。
如果搜索的数字不在数组中,则该函数应返回最大搜索次数以确定该元素不在数组中。
这是一个调用函数的示例:
#include <iostream>
using namespace std;
//Function for binary_search
int binary_search(int search_value, int lst[], int elements)
{
//Dividing the array elements to its half
int mid = elements / 2;
//Condition to check search value is less then list of mid element and return it.
if (lst[mid] > search_value)
return binary_search( elements,lst, mid);
//Condition to check search value is greater then list of mid element and return it.
else if (lst[mid] < search_value)
return binary_search( search_value,&lst[mid], (elements + 1)/2);
else
return mid;
}
int main()
{
int lst[] = {0, 1, 2, 18, 19, 20, 25};
std:cout << binary_search(20, lst, 7);
}
当我搜索 20 时,它会返回找到的索引,即 5,而不是比较次数,应该是 2。
【问题讨论】:
-
那是因为您正在返回项目的索引。您绝不会计算比较次数。
标签: c++ search binary comparison binary-search