在c++中使用2d数组进行二进制搜索
binary search in c++ using 2d array
编写一个循环,询问用户gpa,并在执行搜索之前检查它是否为负值。当用户输入负值时,结束循环。当匹配时,打印相应的学号;如果没有匹配项,请打印"无匹配项"。
我正在研究二进制搜索功能。如果输入了负数,我想编码进行检查和停止,并在输入gpa时打印学生编号(或"未找到")。
void search (double AVGgpa[][NUM_STUDENTS])
{
double gpa;
int first = 0,
last = NUM_STUDENTS - 1,
mid,
position = -1;
int row = 2;
bool found = false; // not found yet
cout << "Enter gpa(-1 to end): ";
cin >> gpa;
if (gpa==-1)
{
cout<<"You enter a nagative value"<<endl;
}
while (!found && first <= last)
{
mid = (first + last) / 2;
if (AVGgpa[row][mid]== gpa)
{
cout << "found at index " << mid << endl;
found = true;
}
else if (AVGgpa[row][mid]> gpa)
last = mid - 1;
else
first = mid + 1;
}
假设您的数据是正确的,并且数组按row
排序,那么您可能会因为float不准确而遇到麻烦。
请看以下问题了解详细信息:浮动和双重比较最有效的方法是什么?
从中可以使用比较函数,如:
bool doubleCompare(double d1, double d2)
{
static const double epsilon = 0.001; // Define this as needed
return std::fabs(d1 - d2) < epsilon;
}
如果这对您没有帮助,您应该检查您的输入数据和/或发布更多代码,因为您的二进制搜索对我来说还可以。
相关文章:
- 有根的二进制搜索树.保留与其父级的链接
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 二进制搜索树叶数问题
- 为什么二进制搜索在我的测试中不起作用
- 正在尝试重载二进制搜索树分配运算符
- 我的二进制搜索程序只是关闭了
- 二进制搜索的终止点
- 递归二进制搜索与字符串数组
- 测试树是否为二进制搜索树
- 如何二进制搜索结构向量并在适当的索引处插入
- 如果你有一个固定大小的数组,你需要遍历它!n次,使用二进制搜索如何改变时间复杂性
- 字符串的递归二进制搜索-C++
- 使用二进制搜索树中的迭代器对象访问左侧节点
- 二进制搜索树没有匹配的函数调用
- 二进制搜索不适用于特定输出
- 如何在向量上进行二进制搜索以找到具有特定id的元素
- 二进制搜索树不变的标头文件
- 二进制搜索树插入带参数参考
- 二进制搜索不变以查找元素的首次出现
- 了解一种神秘地起作用的递归二进制搜索算法