我们得到了一个递增排序的多维数组,例如:
int[][] mat = {{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16}};
如何使用二分查找来查找特定数字?假设我正在寻找 3。
您可以通过将一维索引转换为其对应的二维索引来实现此目的。例如,索引0
映射到0, 0
,但索引4
将映射到1, 0
,和索引15
将映射到3, 3
.
这样,您就可以使用标准的二分搜索算法,而您所要做的就是在需要查找该特定索引处的值时调用转换函数。
将一维索引转换为其二维索引的公式为:
row = floor(index / columns);
column = index % columns;
这假设每个数组都已排序,并且在展平时,结果数组也已排序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)