O'Reilly logo

C# Cookbook by Jay Hilyard, Stephen Teilhet

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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   

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required