Question 10. Sorting II [9]

The program below implements the labex5 partitioning algorithm and runs it once on a small array, but printing the array contents repeatedly as it works through the array.

Show the output the program produces.
#include <iostream>
using namespace std;

void swap(float &a, float &b)
{
   float t = a;
   a = b;
   b = t;
}

void printArr(float arr[], int lower, int upper)
{
   for (int i = lower; i <= upper; i++) {
       cout << arr[i] << ",";
   }
   cout << endl;
}

int partition(float arr[], int lower, int upper)
{
   if (upper <= lower) return lower;
   float pivotVal = arr[lower];
   swap(arr[lower], arr[upper]);
   int pos, midpt;
   midpt = lower;
   for (pos = lower; pos < upper; pos++) {
       if (arr[pos] < pivotVal) {
          swap(arr[pos], arr[midpt]);
          midpt++;
       }
       cout << pos << ": ";
       printArr(arr, lower, upper);
   }
   swap(arr[midpt], arr[upper]);
   return midpt;
}

int main()
{
   float arr[] = { 10, 5, 12, 4, 3, 6, 15 };
   partition(arr, 0, 6);
}