Java 二维数组上的二进制搜索
我有一个完全排序的2D数组。下面的数组是示例Java 二维数组上的二进制搜索,java,arrays,algorithm,binary-search,Java,Arrays,Algorithm,Binary Search,我有一个完全排序的2D数组。下面的数组是示例 1 2 3 5 6 7 9 10 11 及 我想在这些数组上使用二进制搜索。让rows为行数,cols为列数 最初start=0和end=rows*cols-1 在上面的3 X 3数组中,中点是四个[9个元素]。现在,我如何找到相应的行和列的中点?有什么标准公式吗?公式非常简单: row = number/cols_per_row; col = number%cols_per_row; 让size=row
1 2 3
5 6 7
9 10 11
及
我想在这些数组上使用二进制搜索。让rows
为行数,cols
为列数
最初start=0
和end=rows*cols-1
在上面的3 X 3数组中,中点是四个[9个元素]。现在,我如何找到相应的行和列的中点?有什么标准公式吗?公式非常简单:
row = number/cols_per_row;
col = number%cols_per_row;
让
size=rows*cols
mid=size//2
(整数除法)
row=mid//cols
col=mid%cols
(其余部分为整数除法)Hmm..只是好奇。你是怎么想到这个的?好吧,对于每行的每一个cols\u数字,你向下一行。这就解释了为什么第一个数字是用这个公式找到的,对吗?至于第二个,您所在的列循环重复每行的每个列数,所以%
描述了这种行为,对吗?@ThorstenKranz OP每行的列数。由于他/她没有指定存储此数字的变量,我只使用了此符号。@IvayloStrandjev-谢谢。我明白了。
row = number/cols_per_row;
col = number%cols_per_row;