9.4. Reversing a Jagged Array

Problem

The Array.Reverse method does not provide a way to reverse each subarray in a jagged array. You need this functionality.

Solution

Use the ReverseJaggedArray method:

public static void ReverseJaggedArray(int[][] theArray)
{
    for (int rowIndex = 0; 
      rowIndex <= (theArray.GetUpperBound(0)); rowIndex++)
    {
        for (int colIndex = 0; 
             colIndex <= (theArray[rowIndex].GetUpperBound(0) / 2); 
             colIndex++)
        {
            int tempHolder = theArray[rowIndex][colIndex];                        
            theArray[rowIndex][colIndex] = 
              theArray[rowIndex][theArray[rowIndex].GetUpperBound(0) - 
                      colIndex];   
            theArray[rowIndex][theArray[rowIndex].GetUpperBound(0) - 
                      colIndex] =  tempHolder;      
        }
    }
}

Discussion

The following TestReverseJaggedArray method shows how the ReverseJaggedArray method is used:

public static void TestReverseJaggedArray( )
{
    int[][] someArray = 
      new int[][] {new int[3] {1,2,3}, new int[6]{10,11,12,13,14,15}};

    // Display the original array
    for (int rowIndex = 0; rowIndex < someArray.Length; rowIndex++)
    {
        for (int colIndex = 0; 
          colIndex < someArray[rowIndex].Length; colIndex++)
        {
            Console.WriteLine(someArray[rowIndex][colIndex]);
        }
    }
    Console.WriteLine( );

    ReverseJaggedArray(someArray);

    // Display the reversed array
    for (int rowIndex = 0; rowIndex < someArray.Length; rowIndex++)
    {
        for (int colIndex = 0; 
          colIndex < someArray[rowIndex].Length; colIndex++)
        {
            Console.WriteLine(someArray[rowIndex][colIndex]);
        }
    }
}

This method displays the following:

1
2
3
10
11
12
13
14
15

3     The first reversed subarray
2
1
15   

Get C# Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.