gpt4 book ai didi

c++ - 模板 float C++ 上的二进制搜索

转载 作者:行者123 更新时间:2023-11-28 06:10:04 25 4
gpt4 key购买 nike

我的任务是为浮点值数组编写二进制搜索,即使在不同的硬件平台或不同的编译器上运行时,该数组也会报告相同的答案。此外,提供一个模板,为任何提供的数据类型提供二进制搜索算法。

所以,我这样写:

#include <iostream>
using namespace std;
template<typename T>

bool bsearch(T num)
{
T arr[] = {5.3, 6.62, 7.74, 10.22, 13.22};
int len = (sizeof(arr)/sizeof(*arr));
int mid, l_bound=0, u_bound = len-1;
while (l_bound <= u_bound)
{
mid =(l_bound+u_bound)/2;
if (num > arr[mid])
l_bound = mid+1;
else if (num < arr[mid])
u_bound = mid -1;
else
return true;
}
return false;
}

int main()
{
float num;
cout <<"Number to search: ";
cin >>num;
if (bsearch(num) == true)
cout <<"Number found!\n";
else
cout <<"Nubmer not found!\n";

}

这适用于我的机器,用于查找数组中的 float 。我的问题:这看起来是否满足要求?我怎么知道这是否适用于其他硬件平台?我是否正确地为这个问题提供了模板?

最佳答案

不,函数应该接受数组和搜索值。

template<typename T>
bool bsearch(T* begin, T* end, T num){
auto len = end - begin;

例如。

用 David Attenborough 的声音朗读:

int main()
{
float num;
cout <<"Number to search: ";
cin >>num;
float array_to_search_in[] = {5.3, 6.62, 7.74, 10.22, 13.22};
bool search_result = bsearch(array_to_search_in, array_to_search_in +5, num);
if (search_result == true)...

关于c++ - 模板 float C++ 上的二进制搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31440013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com