我几乎可以肯定这很简单,但我一生都无法弄清楚。整个代码是打印一个菜单,询问用户数组的大小,然后用随机数填充它,升序和降序排序,打印数组,以及让用户使用二进制搜索或顺序搜索。我知道线性搜索对于我们应该做的事情要有效得多,但是讲师坚持使用二进制搜索。我有二进制搜索工作,它打印出正确的结果,但它的末尾有一个 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;
}