Jan 18, 2002

Reading assignment:
  Deitel and Deitel Chapter 4.6, 4.7, 4.8 
  -or read the web links below for info on bubble sort 

Sorting arrays
  - Sorting is a very important problem in computer science.  There are
    many algorithms that have been invented for sorting arrays, and they
    vary in their speed.  If an array is large, it's very important
    to use a fast algorithm.
  - There are some algorithms that are easy to understand and easy to
    implement, but very poor performers and so they're never used in
    practice.  One of these is called the bubble sort and we're going
    to learn it.
  - If an array has n  entries, we will make n-1 passes through the array.
    On the first pass, compare successive elements (compare a[0] to
    a[1], then a[1] to a[2], etc.)  Each time the two elements are in
    the wrong order, swap them (you need a variable to hold one of
    the values while you swap them).  Proceed like this all the way to
    the end of the array.
    On the second pass, do the same thing, except that you can stop
    before the last compare, because the last element is already in the
    right place.
    The third pass is the same, except that you can omit the last two
    compares.
    Continue with this pattern until you have done n-1 passes, and the
    elements will be sorted
  - Know that there are better sort algorithms and two famous
    ones are called quick sort and heap sort
  - Read section 4.7 in Deitel and Deitel, which gives an example of
    a program that uses a bubble sort.

File I/O
  - #include <fstream>
  - Declare an ofstream variable for a file you want to write to
  - Declare an ifstream variable for a file you want to write to
  - to open, for example:
      outfile.open("foo.txt", ios::out);
      infile.open("foo2.txt", ios::in);
  - To check if the file is open, use file.is_open();
  - To write to a file, use the stream insertion character, for example
       outfile << num << endl;
  - To read from a file, use the stream extraction character, for example
       infile >> num;
  - To close a file, use file.close();

Here's the bubble sort from class (slightly better than the text's algorithm):

bubble.cpp

Here's the program from class that inputs the list from a file and outputs sorted list to file:

bubble2.cpp

Here's a cool web site with an animation of bubble sort:

Bubble sort animation

If you don't own Deitel and Deitel, you can read about the bubble sort on the first couple paragraphs of this web site (from the University of Hawaii):

Bubble sort description