public static int partition2(int [] A, int lo, int hi)  {

      int pivot,i,j;

      pivot = Randnums.randnum(lo,hi-1);

      int mid = pivot;

      //locate pivot in well known position -- at front of the list

      swap(A, lo, pivot);

      i = lo;

      j= i + 1;

      while (j < hi) {

        count+2; cmprs++;

        if (A[j] <= A[lo]) {

            i = i + 1;

            swap(A, i, j);

        }

        j++;

      }

      //put pivot into its right position

      swap(A, lo, i);

      count++;

      return i;

    } // end partition2;

   

    public static void quicksort2(int [] A, int lo, int hi) {

      int split;

      count++;

      if ((hi - lo) > 1) {

        split = partition2(A,lo,hi);

        quicksort2(A,lo,split);

        quicksort2(A,split+1,hi);

      }

    } // end quicksort