【发布时间】:2012-11-23 04:50:07
【问题描述】:
假设我有一个从左到右、从上到下的索引 12(第 12 个元素)。
我有一个数组[4][4]。
在给定一维索引 12 的情况下,计算索引 [3][2] 的最快方法是什么? (一维索引从 1 开始)。
谢谢
【问题讨论】:
-
index[3][2]不等同于index[12]。[3][2]覆盖 15 个单元格。
假设我有一个从左到右、从上到下的索引 12(第 12 个元素)。
我有一个数组[4][4]。
在给定一维索引 12 的情况下,计算索引 [3][2] 的最快方法是什么? (一维索引从 1 开始)。
谢谢
【问题讨论】:
index[3][2] 不等同于 index[12]。 [3][2] 覆盖 15 个单元格。
不知道这是否最快,但绝对简单:
假设数组[x][y]
ix = floor(index / y)
iy = index % y
例子:
01
23
45
x = 3
y = 2
index = 3
ix = floor(3 / 2) = 1
iy = 3 % 2 = 1
index = 5
ix = floor(5 / 2) = 2
iy = 5 % 2 = 1
【讨论】:
iy。
给定 a[x][y] 是数组
使用这个公式
[index of 1d array]= (rnum * colsize) + (colnum + 1)
所以对于带有colsize=4的[3][2]
= (3 * 4) + (2 + 1)
= 15
【讨论】: