我几乎是肯定的,这很简单,但我不能为我的生活弄清楚。整个代码是打印一个菜单,询问用户和数组大小,然后用随机数填充它,对其进行升序和降序排序,打印数组,以及让用户使用二进制搜索或顺序搜索。我知道线性搜索对于我们应该做的事情来说效率要高得多,但是教练坚持二元搜索。我有二进制搜索工作,它打印出正确的结果,但在它的末尾有一个1(即位置14出现为141)。这是调用函数的开关案例:
case 7:
int num, result;
cout << "Please enter an int to search for" << endl;
cin >> num;
result = binarySearch(Array1, num, 0, size);
cout << num << "was found at position " << result;
break;
}
}
这是功能:
int binarySearch(int arr[], int key, int first, int last)
{
while (first <= last)
{
int mid = (last + first) / 2;
if (key < arr[mid])
{
last = mid - 1;
}
else if (key > arr[mid])
{
first = mid + 1;
}
else
{
return mid;
}
}
return -1;
}
答案 0 :(得分:2)
刚尝试了我的机器上的代码 - 我没有在输出中附加额外的1
。所以,我认为1
正在其他地方打印出来。
首先,添加空格(或endl
末尾的cout
。这将确认您获得的结果是正确的,并且1正在其他地方打印。然后,您可以尝试在代码中查找额外的1(可能在switch()之后)。
cout << num << "was found at position " << result << " ";
如果您需要进一步的帮助,请更新其余代码。