Проблемно Учитывая отсортированный двукратно список ссылок и два числа C и K. Вы должны уменьшить данные узла с данными
K
поC
и вставить новый узел, образованный на его правильное чтобы список оставался отсортированным.Лучший алгоритм сортировки - Частично отсортирован связанный список
Я бы думать о вставки рода для такой проблемы, потому что, сортировка вставкой в любом случае выглядит, как показано кучу карт,
, которые частично отсортированных. Для сортировки вставки количество свопов эквивалентно числу инверсий. Количество сравнений равно количеству обменов + (N-1).
Итак, в заданной задаче (выше), если узел с данными K уменьшается на C, то отсортированный связанный список частично сортируется. Сортировка вставки наилучшим образом подходит.
Другим моментом является выбор алгоритма сортировки, если логика сортировки, применяемая для представления данных в массиве, наилучшим образом подходит, то такая же логика сортировки должна наилучшим образом соответствовать представленному представлению одинаковых данных.
Для решения этой проблемы, правильно ли мой метод рассмотрения при выборе сортировки вставки?
Возможно, [это] (https://stackoverflow.com/questions/1525117/whats-the-fastest-algorithm-for-sorting-a-linked-list) ответ поможет? – Richard
Является ли операция 'уменьшение (int nodeWithK, int уменьшениеByC)' однократной? –
@Richard Вы говорите, что если эти данные, заданные в задаче, были представлены в виде массива, тогда лучше было бы выбрать * Insertion sort *. Если эти данные находятся в связанном списке, то * Merge sort * лучше всего подходит для частично отсортированных данных? – overexchange