我在接受采访时被问到这个问题。在采访之后我做了很多谷歌,但我仍然无法得到明确的解决方案。有人可以告诉我如何使用他提到的函数签名返回(row,col)对(是!返回两个值)。
void find(int A[][10], int m, int n, int target, int& row, int& col)
答案 0 :(得分:2)
您的问题标题与实际问题的不同。所以不确定您是否需要搜索方法或如何从该函数签名返回值。 因此,不确定您需要什么以及下面的详细信息是否正确。 因为两个变量row和col是references.justdo搜索并填充函数内的值。然后你可以在你调用的地方使用这两个引用。 例如: 如果您从其他任何地方调用以下函数:
find( dptr, 5, 19, 5, i,j);
i和j将填充在函数内部。您可以在调用后使用它们。这意味着从函数返回两个值。
答案 1 :(得分:1)
我猜测矩阵是这样排序的:
1 2 3
4 5 6
7 8 9
应用二进制搜索两次,例如查找元素5:
5
二进制搜索只是在中间选择元素的方法。如果它太大,请选择上半场,否则选择下半场。重复,直到找到您要查找的元素。