private int partition(int array[], int start, int end)
   {
      int pivotValue, pivotIndex, mid;
   
      mid = (start + end) / 2;
   
      super.swap(array, start, mid);
      pivotIndex = start;
      pivotValue = array[start];
      for (int scan = start + 1; scan <= end; scan++)
      {
         if (array[scan] < pivotValue)
         {
            pivotIndex++;
            swap(array, pivotIndex, scan);
         }
      }     
      super.swap(array, start, pivotIndex);
      
      return pivotIndex;
   }