639. На преобразовании массива, описанном в задаче 637,
основывается также следующий алгоритм поиска значения k-го по
величине элемента массива a
1
, …, a
n
(т. е. того элемента, который бы
занял место с номером k после упорядочения массива). Пусть в
результате преобразования, описанного в задаче 637, первый элемент
занял p-е место; если k = p, то поиск закончен; если k < p, то надо
перейти к поиску k-го по величине элемента в начальной группе
элементов, содержащей p – 1 элемент (задача упростилась, так как p –
1 < n); если же k > p, то надо перейти к поиску (k – p)-го по величине
элемента во второй группе элементов (задача упростилась, так как n –
p < n). Этот алгоритм не содержит рекурсий. Не пользуясь рекурсиями,
написать программу, реализующую этот алгоритм.
640. Нетрудно заметить, что алгоритм, описанный в
предыдущей задаче, фактически позволяет найти не только k-й по
величине элемент, но и дополнительно 1-й, 2-й, …, (k – 1)-й элементы,