16. TUZ_3-16 Сортировка по приоритетам


TUZ_3-16 Сортировка по приоритетам

TUZ_3-16 Сортировка по приоритетам
3.16 Сортировка по приоритетам
В этом задании даются список и множество. Оба содержат положительные и отрицательные целые числа.
Ваша задача: написать функцию, которая принимает эти две структуры данных и сортирует список с учетом прио- ритетных элементов, указанных в множестве. В частности, функция долж- на сначала выявить элементы, присутствующие как в списке, так и в множестве, и добавить их в новый список в порядке возрастания. Затем она должна добавить оставшиеся элементы из исходного списка так же в по- рядке возрастания.
В табл. 3.16 показаны ожидаемые результаты для некоторых входных данных.
Таблица 3.16. Некоторые ожидаемые результаты для задачи сортировки по приоритетам 
List, set Ожидаемый результат 
[5, 2,7, 3, 2, 1,29], {2, 7} [2, 2, 7, 1, 3, 5, 29]
[1, 4, 8, 9, 13, 11, 17], {11, 12} [11, 1, 4, 8, 9, 13, 17]
[4, 5, 7, 13, 290], {3, 4, 1, 8} [4, 5, 7, 13, 290]
[4, -2, 5, 7, 13, -8, 9, 8], {2, 4, 1, 8} [4, 8, -8, -2, 5, 7, 9, 13]

Алгоритм
Алгоритм выявляет минимальный элемент во входном списке и проверяет, присутствует ли он в множестве.
Если присутствует, то алгоритм добавляет минимальный элемент в выходной список столько раз, сколько он появляется во входном списке,
и удаляет его из входного списка, а также из множества, чтобы избежать дублирования.
Этот процесс повторяется для всех элементов в множестве, что гарантирует сортировку списка в порядке приоритетов, определяемых множеством.
После обработки всех элементов множества все оставшиеся элементы входного списка сортируются по возрастанию и добавляются в выходной список.


time 1000 ms
memory 256 Mb

Комментарий учителя