Sorting Arrays

Two useful static methods from Table 10-1 that deserve a closer look are Sort( ) and Reverse( ). These methods do what you think they would: Reverse( ) reverses the order of elements in the array, and Sort( ) sorts the elements in order. These are fully supported for arrays of the built-in C# types, such as string, so sorting an array of strings puts the elements in alphabetical order, and sorting an array of ints puts them in numeric order. Making the Sort( ) method work with your own classes is a bit trickier, as you must implement the IComparable interface (see Chapter 13 for more on interfaces). Example 10-7 demonstrates the use of these two methods to manipulate String objects.

Example 10-7. Using Array.Sort and Array.Reverse

using System;

namespace ArraySortAndReverse
{
   public class Tester
   {
      public static void PrintMyArray( string[] theArray )
      {

         foreach ( string str in theArray )
         {
            Console.WriteLine( "Value: {0}", str );
         }
         Console.WriteLine( "
" );
      }

      static void Main( )
      {
         String[] myArray =
            {
                "Proust", "Faulkner", "Mann", "Hugo"
            };

         PrintMyArray( myArray );
         Array.Reverse( myArray );
         PrintMyArray( myArray );

         String[] myOtherArray =
            {
                "We", "Hold", "These", "Truths",
                "To", "Be", "Self","Evident",
            };

         PrintMyArray( myOtherArray );
         Array.Sort( myOtherArray );
         PrintMyArray( myOtherArray );

      }
   }
}

The output looks like this:

    Value: Proust
    Value: Faulkner
    Value: Mann
    Value: Hugo

    Value: Hugo
    Value: Mann
    Value: Faulkner
    Value: Proust

    Value: We
    Value: Hold
    Value: These
    Value: Truths
    Value: To
    Value: Be
    Value: Self
    Value: Evident

    Value: Be
    Value: Evident
    Value: Hold
    Value: Self
    Value: These
    Value: To
    Value: Truths
    Value: We

The example begins by creating myArray, an array of strings with the words:

    "Proust", "Faulkner", "Mann", "Hugo"

This array is printed, and then passed to the Array.Reverse( ) method, where it is printed again to see that the array itself has been reversed:

    Value: Hugo
    Value: Mann
    Value: Faulkner
    Value: Proust

Similarly, the example creates a second array, myOtherArray, containing the words:

    "We", "Hold", "These", "Truths",
    "To", "Be", "Self", "Evident",

This is passed to the Array.Sort( ) method. Then Array.Sort( ) happily sorts them alphabetically:

    Value: Be
    Value: Evident
    Value: Hold
    Value: Self
    Value: These
    Value: To
    Value: Truths
    Value: We

Tip

Array.Sort( ) and Array.Reverse( ) are static methods, meaning you call them on the class, not the object, as discussed in Chapter 7. That means you don’t call myArray.Reverse( ) to reverse the elements; instead, you call the static method and pass in the array as an argument, like this:

    Array.Reverse(myArray);
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset