в других вопросах StackOverflow, но не для Пролога.

логическую программу для kth_largest (Xs, K), которая реализует линейный алгоритм для нахождения k-го наибольшего элемента K из списка Xs. Алгоритм имеет следующие этапы:

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

Как мне это сделать? Я могу выбрать элемент из списка, но я не знаю, как получить наибольшее с помощью описанной выше процедуры. Вот мое определение для выбора элемента из списка

select(X; HasXs; OneLessXs)  
% The list OneLessXs is the result of removing
% one occurrence of X from the list HasXs.
select(X,[X|Xs],Xs).
select(X,[Y|Ys],[Y|Zs]) :-  select(X,Ys,Zs).

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

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