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