C# 迭代分割二维数组 int numberOfThreads=4; 整数除法=(大小*大小)/numberOfThreads; int-startI=0,startJ=0; int endI=分区/大小,endJ=分区%size; 对于(int i=0;i3,0到3,4 如果我想把它分成8部分: 0,0到0,0->0,1到0,1->0,2到0,2->0,3到0,3等等,假设我理解正确,我想你希望以这样的方式结束: int numberOfThreads=4; int division = (size * size) / numberOfThreads; int startI = 0, startJ = 0; int endI = division/size,endJ=division%size; for (int i = 0; i < 4; i++) { Console.WriteLine("Start I: {0} Start J:{1} && End I: {2} End J: {3}",startI,startJ,endI,endJ); startI = endI; startJ = endJ; //endI += (division/size); <-- how to find next ending index? //endJ += (division % size); <-- how to find next ending index? } [ [[0,0],[0,1][0,2][0,3]], [[1,0],[1,1][1,2][1,3]], [[2,0],[2,1][2,2][2,3]], [[3,0],[3,1][3,2][3,3]] ]
或者像这样:C# 迭代分割二维数组 int numberOfThreads=4; 整数除法=(大小*大小)/numberOfThreads; int-startI=0,startJ=0; int endI=分区/大小,endJ=分区%size; 对于(int i=0;i3,0到3,4 如果我想把它分成8部分: 0,0到0,0->0,1到0,1->0,2到0,2->0,3到0,3等等,假设我理解正确,我想你希望以这样的方式结束: int numberOfThreads=4; int division = (size * size) / numberOfThreads; int startI = 0, startJ = 0; int endI = division/size,endJ=division%size; for (int i = 0; i < 4; i++) { Console.WriteLine("Start I: {0} Start J:{1} && End I: {2} End J: {3}",startI,startJ,endI,endJ); startI = endI; startJ = endJ; //endI += (division/size); <-- how to find next ending index? //endJ += (division % size); <-- how to find next ending index? } [ [[0,0],[0,1][0,2][0,3]], [[1,0],[1,1][1,2][1,3]], [[2,0],[2,1][2,2][2,3]], [[3,0],[3,1][3,2][3,3]] ],c#,C#,或者像这样: int numberOfThreads=4; int division = (size * size) / numberOfThreads; int startI = 0, startJ = 0; int endI = division/size,endJ=division%size; for (int i = 0; i < 4; i++) { Console.WriteLine("Start I: {0} Start J:{1} && End I:
int numberOfThreads=4;
int division = (size * size) / numberOfThreads;
int startI = 0, startJ = 0;
int endI = division/size,endJ=division%size;
for (int i = 0; i < 4; i++)
{
Console.WriteLine("Start I: {0} Start J:{1} && End I: {2} End J: {3}",startI,startJ,endI,endJ);
startI = endI;
startJ = endJ;
//endI += (division/size); <-- how to find next ending index?
//endJ += (division % size); <-- how to find next ending index?
}
[
[[0,0],[0,1][0,2][0,3]],
[[1,0],[1,1][1,2][1,3]],
[[2,0],[2,1][2,2][2,3]],
[[3,0],[3,1][3,2][3,3]]
]
我仍然有点不清楚您的原始数组是什么样子,但我猜您是从数组维度而不是实际填充的数组来完成的
如果仍然是这样的话,我会在第1个版本中这样做:
[
[0,0],
[0,1],
[0,2],
[0,3],
[1,0],
[1,1],
[1,2],
[1,3],
[2,0],
[2,1],
[2,2],
[2,3],
[3,0],
[3,1],
[3,2],
[3,3]
}
public int[][]GetArrayCoordinates(int-xAxisSize,int-yAxisSize)
{
var CoordinateArray=新整数[xAxisSize][];
对于(int x=0;x
这将给出一个多维数组(数组数组数组),其中x坐标在每个集合中位于第一位
第二版:
public int[][][] GetArrayCoordinates(int xAxisSize, int yAxisSize)
{
var coordinatesArray = new int[xAxisSize][][];
for (int x = 0; x < xAxisSize; x++)
{
coordinatesArray[x] = new int[yAxisSize][];
for (int y = 0; y < yAxisSize; y++)
{
coordinatesArray[x][y] = new int[] { x , y};
}
}
return coordinatesArray;
}
public int[][]GetArrayCoordinates(int-xAxisSize,int-yAxisSize)
{
var指数=0;
var CoordinateArray=新整数[xAxisSize*yAxisSize]];
对于(int x=0;x
这应该会给你一个锯齿状数组(数组数组数组),每个数组的x坐标都排在第一位。你能定义一下“数组分割”的意思吗?你只是想把数组分成相等的部分吗?例如,如果你有类似于
[[1,2,3,4],[5,6,7,8]
,你最终会得到[1,2]
,[3,4]
、[5,6]
和[7,8]
?您能给出一个实际数据和预期结果的示例吗?编辑question@DanialAhmed-我下面的回答有用吗?