SOURCE FILE: bubbleSort.cpp


void BubbleSort(dataType A[], int N)
// ---------------------------------------------------
// Sorts the items in an array into ascending order.
// Precondition: A is an array of N items.
// Postcondition: The array A is sorted into ascending 
// order; N is unchanged.
// Calls: Swap.
// ---------------------------------------------------
{
   bool Sorted = false;  // false when swaps occur

   for (int Pass = 1; (Pass < N) && !Sorted; ++Pass)
   {  // Invariant: A[N+1-Pass..N-1] is sorted
      //            and > A[0..N-Pass]
      Sorted = true;  // assume sorted
      for (int Index = 0; Index < N-Pass; ++Index)
      {  // Invariant: A[0..Index-1] <= A[Index]
         int NextIndex = Index + 1;
         if (A[Index] > A[NextIndex])
         {  // exchange items
            Swap(A[Index], A[NextIndex]);
            Sorted = false;  // signal exchange
         }  // end if
      }  // end for

      // Assertion: A[0..N-Pass-1] < A[N-Pass]
   }  // end for
}  // end BubbleSort