code: private static <E extends Comparable<E>> int partitionDescending(E[] array, int start, int end) {
          E pivot = array[end];
          int index = start - 1;
          
          for(int j = start; j < end; j++) {
              if(array[j].compareTo(pivot) >= 0) {
                  index++;
                  TrivialSwap.swap(array, index, j);
              }
          }
          
          TrivialSwap.swap(array, index + 1, end);
          
          return index + 1;
      }
docs: Routine that arranges the elements in descending order around a pivot. This routine
  runs in O(n) time.
  
  @param <E> the type of elements in this array.
  
  @param array array that we want to sort
  @param start index of the starting point to sort
  @param end index of the end point to sort
  
  @return an integer that represent the index of the pivot