Объединить алгоритм быстрой сортировки и выбора медианы

Я хочу изменить QuickSort (в Java) так, чтобы каждый раз, когда вызывался Partition, медиана пропорционального массива использовалась как опорная точка.

У меня есть алгоритм выбора медианы в Java, который возвращает k-й наименьший элемент, в данном случае медиану. У меня есть тонны алгоритмов быстрой сортировки в Java, которые все работают сами по себе и сортируют массив. К сожалению, я не могу объединить эти два параметра для достижения вышеизложенного ... Каждый раз, когда я пытаюсь это сделать, я обычно получаю ошибки stackoverflow.

Кто-нибудь может показать мне код, чтобы увидеть, как это можно сделать?

Спасибо

РЕДАКТИРОВАТЬ: Например, это алгоритм выбора медианы, который я пытался использовать.

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;
}

Он работает сам по себе, но когда я пытаюсь вызвать quickSelect через функцию секционирования быстрой сортировки, чтобы вернуть используемую сводку, он не работает. Очевидно, что я делаю что-то не так, но я не знаю что. К сожалению, в Интернете я не нашел ни одного алгоритма, даже в псевдокоде, который бы сочетал медианный выбор с быстрой сортировкой.

Ответы на вопрос(4)

Ваш ответ на вопрос