Combine o algoritmo de seleção QuickSort e Median

Eu quero modificar o QuickSort (em Java) para que toda vez que o Partition for chamado, a mediana do array proporcional seja usada como o pivô.

Eu tenho um algoritmo de seleção mediana em Java que retorna o menor elemento kth, neste caso a mediana. Eu tenho toneladas de algoritmos de quicksort em java que todos trabalham sozinhos e ordenam um array. Infelizmente eu não posso combinar os dois para alcançar o que foi dito acima ... Toda vez que eu tento normalmente eu recebo erros de stackoverflow.

Alguém pode me mostrar o código para ver como isso pode ser feito?

obrigado

EDIT: Por exemplo, este é um algoritmo de seleção mediana que eu tentei usar.

public int quickSelect(int[] A, int p, int r, int k) {
    if (p==r) return A[p];
    int q = Partition(A,p,r);
    int len = q-p+1;

    if (k == len) return A[q];
    else if (k<len) return Select(A,p,q-1,k);
    else return Select(A,q+1,r,k-len);
}

public int partition(int[]A, int p, int r) {
    int x = A[r];
    int i = p-1;
    for (int j = p; j<=r-1; j++) {
        if (A[j] <= x) {
            i++;
            swap(A,i,j);
        }
    }
    swap(A,i+1,r);
    return i+1;
}

Ele funciona sozinho, mas quando eu tento chamar quickSelect através da função de partição do quicksort para retornar o pivô a ser usado, ele não funciona. Obviamente estou fazendo algo errado, mas não sei o quê. Infelizmente na internet eu não encontrei nenhum algoritmo, mesmo em pseudocódigo, que combinaria uma seleção mediana com quicksort.

questionAnswers(4)

yourAnswerToTheQuestion