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-我下面的回答有用吗?