Recipe 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  The second reversed subarray 14 13 12  The third reversed subarray 11 10 

The logic used to reverse each subarray of a jagged array is very similar to the reversal logic discussed in the previous recipe. The ReverseJaggedArray method uses the same basic logic presented in Recipe 9.2 to reverse each element in the array; however, a nested for loop is used instead of a single for loop. The outer for loop iterates over each element of the first dimensioned array of the jagged array (there are two elements in this array). The inner for loop is used to iterate over each array contained within the second dimensioned array of the jagged array. The reverse logic is then applied to the elements handled by the inner for loop. This allows each array contained by the first dimensioned array in the jagged array to be reversed.

See Also

Recipe 9.2 and Recipe 9.3.



C# Cookbook
C# 3.0 Cookbook
ISBN: 059651610X
EAN: 2147483647
Year: 2003
Pages: 315

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net