| 
  
  
    
      | 
         | Sorting Arrays 
* Definition:   Sorting is 
the process of putting data in order; either numerically or alphabetically.
 
 |  It is often necessary to arrange the elements in an array in numerical order from highest to lowest
values (descending order) or vice versa (ascending 
order).  If the array contains string values, alphabetical order may 
be needed (which is actually ascending order using ASCII values).  The process of sorting an array requires the exchanging of values.  
	While this seems to be a simple process, a computer must be careful that no 
	values are lost during this exchange.  Consider the following dilemma:  Suppose that   grade[1] = 10  and
  grade[2] = 8  and you want to exchange their values so that
  grade[1] = 8  and   grade[2] = 10.    You could
 NOT just do this:
 grade[1] = grade[2];
 grade[2] = grade[1];      // DOES NOT WORK!!!
 
 In the first step, the value stored in  grade[1] is erased and replaced with
 grade[2].
 The result is that both  grade[1] and 
grade[2] now have the same value.  Oops!  Then what happened to 
the value in grade[1]?  It is lost!!!
 
 In order to swap two values, you must use a third variable,(a "temporary holding variable"), to
temporarily
 hold the value you do not want to lose:
 //swapping
variables
 temp = grade[1];     
// holding variable
 grade[1] = grade[2];
 grade[2] = temp;
 
 This process successfully exchanges, "swaps", the values of the two variables
 (without the loss of any values).
 Remember the example in class of the two horses switching stalls!!
 Ways to sort arrays: There are literally hundreds of different ways to sort arrays.  The basic goal of each 
of these methods is the same:  to compare each array element to another array element and swap them if they are in the wrong position. 
 The bubble sort is one of the easiest algorithms to understand and we will begin our investigation with this sort.
 
 Click to see the codings of these various 
algorithms:
 Bubble Sort
 Exchange Sort
 Selection Sort
 Insertion Sort
 Shell Sort
 Quick Sort
 Merge Sort
 
	
		| 
 | There are often built-in search and sort "routines" in
      various C++ compiler packages (such as bsearch, lfind, lsearch, and qsort). 
      These routines were not designed to be used with apvectors.  The use of these routines also requires an understanding of "pointers", which we have not yet discussed. 
      It is imperative that you, the programmer, know and understand at least one method of searching an array and one method of sorting an array, separate from any built in "routines."  |  Link to viewing animated
representations of sorting:
 
  
    Sorting
    Algorithmsjava representations of bubble sort,
    quick sort, odd-even transposition sort, and the shear sort.  Shows
    comparisons of times to complete the sorts.
 |