// File: main2.C
//
// Second test of quicksort

#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>
#include <time.h>

#define DATA int
#include "quicksort2.C"

#define DATA float
#include "quicksort2.C"

main() {
   int *A, i, n=50 ;

   srand48(time(NULL)) ;
   A = new int[n] ;
   if (A == NULL) abort() ;

   cout << "\nOriginal Array: " << endl ;
   for (i = 0 ; i < n ; i++) {
      A[i] = lrand48() ;
      cout << setw(12) << A[i] << "  " ;
      if (i % 5 == 4) cout << endl ;
   }

   QuickSort(A,n) ;

   cout << "\nSorted Array: " << endl ;
   for (i = 0 ; i < n ; i++) {
      cout << setw(12) << A[i] << "  " ;
      if (i % 5 == 4) cout << endl ;
   }


   // Do it again with a floating point array

   float *B = new float[n] ;
   if (B == NULL) abort() ;

   cout << "\nOriginal Array: " << endl ;
   for (i = 0 ; i < n ; i++) {
      B[i] = drand48() ;
      cout << setw(12) << B[i] << "  " ;
      if (i % 5 == 4) cout << endl ;
   }

   QuickSort(B,n) ;

   cout << "\nSorted Array: " << endl ;
   for (i = 0 ; i < n ; i++) {
      cout << setw(12) << B[i] << "  " ;
      if (i % 5 == 4) cout << endl ;
   }
}
