/** * Performs a sort on the section of the array between the given indices * using a mergesort with exponential search algorithm (in which the merge * is performed by exponential search). n*log(n) performance is guaranteed * and in the average case it will be faster then any mergesort in which the * merge is performed by linear search. * * @param in - * the array for sorting. * @param out - * the result, sorted array. * @param start * the start index * @param end * the end index + 1 */ @SuppressWarnings("unchecked") private static void mergeSort(Object[] in, Object[] out, int start, int end) { int len = end - start; // use insertion sort for small arrays if (len <= SIMPLE_LENGTH) { for (int i = start + 1; i Comparable