协调计算问题!

时间:2011-07-02 18:20:27

标签: c# arrays math multidimensional-array

我正在使用一维数组来模拟二维数组,因为这样做会增加性能。

当数组的高度为30个项目且数组的宽度为20个项目时,用于查找项目放置位置索引的公式如下。

offset = x * 30 + y

鉴于这些相同的信息,我如何将偏移量转换回位置?我知道这是可能的。我想不出怎么做。

2 个答案:

答案 0 :(得分:3)

int x = offset / 30;
int y = offset % 30;

答案 1 :(得分:1)

您可以使用除法和模数来完成此操作。

我当然不知道你使用它的是什么,但请考虑到远远超过性能的可读性。 经验法则:只有在确实存在速度问题时才进行优化。

事实上,如果您 担心性能,那么请重新考虑数组的空间位置。如果要在所有元素中运行循环,那么在您的情况下,按列而不是行进行。 正如您在那个方向上组织阵列一样。

我会按行完成(可读性和可维护性):

offset = y * 20 + x