C#, rotating 2D arrays
I've looked at other post on rotating 2D arrays, but it's not quite what I want. I want something like this
int[,] original= new int[4,2]
{
{1,2},
{5,6},
{9,10},
{13,14}
};
I want to turn it like this, rotatedArray = { {1,5,9,13}, {2,6,10,14}}; I want to do some analysis by column, as opposed to by rows.
This works, but is there an easier way??
private static int[,] RotateArray(int[,] myArray)
{
int org_rows = myArray.GetLength(0);
int org_cols = myArray.GetLength(1);
int[,] myRotate = new int[org_cols, org_rows];
for 开发者_Python百科(int i = 0; i < org_rows; i++)
{
for(int j = 0; j < org_cols; j++)
{
myRotate[j, i] = myArray[i, j];
}
}
return myRotate;
}
Is there an easy way to iterate through columns in c#?
BIf you change your array to be an array of arrays it gets easier. I found this if you change it to an int[][]:
int[][] original = new[]
{
new int[] {1, 2},
new int[] {5, 6},
new int[] {9, 10},
new int[] {13, 14}
};
and the rotate method:
private static int[][] Rotate(int[][] input)
{
int length = input[0].Length;
int[][] retVal = new int[length][];
for(int x = 0; x < length; x++)
{
retVal[x] = input.Select(p => p[x]).ToArray();
}
return retVal;
}
精彩评论