2010-04-28 3 views
7

Я посмотрел на другое сообщение на вращающихся 2D-массивах, но это не совсем то, что я хочу. я хочу что-то вроде этогоC#, вращающиеся 2D-массивы

int[,] original= new int[4,2] 
     { 
      {1,2}, 
      {5,6}, 
      {9,10}, 
      {13,14} 
     }; 

Я хочу, чтобы включить его, как это, rotatedArray = {{1,5,9,13}, {2,6,10,14}}; Я хочу сделать некоторый анализ по столбцу, а не по строкам.

Это работает, но есть ли более простой способ?

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 (int i = 0; i < org_rows; i++) 
     { 
      for(int j = 0; j < org_cols; j++) 
      { 
       myRotate[j, i] = myArray[i, j]; 
      } 
     } 

     return myRotate; 
    } 

Есть ли простой способ перебора столбцов в C#?
B

+0

Было бы гораздо проще, если вы будете использовать другой способ массивов: ИНТ [ ] [] вместо int [,] – Tigraine

ответ

5

Если вы измените массив на массив массивов, вам станет легче. Я нашел это, если вы измените его на межд [] []:

int[][] original = new[] 
            { 
             new int[] {1, 2}, 
             new int[] {5, 6}, 
             new int[] {9, 10}, 
             new int[] {13, 14} 
            }; 

и циклического сдвига метода:

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; 
} 
+0

Спасибо Tigraine, мне придется немного изменить свою функцию вызова, но это нормально – user327764

+0

Я не совсем этому доволен. Но с [,] перечислитель проходит через все элементы обоих измерений, и это делает его немного сложнее. – Tigraine

+0

Это также работает с массивом [] [], мне просто нужно было немного изменить свой вызов, чтобы использовать [] [ ], но [,] гораздо проще в использовании. Я просто немного поработал над этим и, видимо, (к моему удивлению) [] [] быстрее, чем [,] – user327764

Смежные вопросы