protected int partitionByMedian(double[] S, int[] freq, int[] indices, int low, int high) {
    final int arraysize = high - low;
    double[] subList = new double[(arraysize + 4) / 5];
    int[] subListFreq = null;
    if (freq != null) {