QuickSort { public static <T> T[] quickSort(T[] array, Comparator<T> comparator) { return quickSort(array, 0, array.length - 1, comparator); }  static T[] quickSort(T[] array, Comparator<T> comparator); static int partition(T[] array, int startIndex, int endIndex,
			Comparator<T> comparator, int pivotIndex);  }
@Test public void ascendingOrderSort() { Integer[] array = { 5, 4, 3, 2, 1 }; Integer[] sorted = QuickSort.quickSort(array, ascOrderComparator); assertArrayEquals("Failure => Array returned is not sorted.", sorted, new Integer[] { 1, 2, 3, 4, 5 }); }
@Test public void descendingOrderSort() { Integer[] array = { 1, 2, 3, 4, 5 }; Integer[] sorted = QuickSort.quickSort(array, descOrderComparator); assertArrayEquals("Failure => Array returned is not sorted.", sorted, new Integer[] { 5, 4, 3, 2, 1 }); }
@Test public void randomOrderSort() { Integer[] array = { 5, 1, 3, 2, 4 }; Integer[] sorted = QuickSort.quickSort(array, ascOrderComparator); assertArrayEquals("Failure => Array returned is not sorted.", sorted, new Integer[] { 1, 2, 3, 4, 5 }); }