Сортировка вставками с использованием связанного списка: реализация и пример

Вот объяснение алгоритма сортировки вставками с использованием связанного списка:

Сортировка вставками – это простой алгоритм сортировки, который создает окончательный отсортированный список по одному элементу за раз. Алгоритм работает путем итеративной вставки элемента из входного списка в его правильную позицию в отсортированном подсписке.

Чтобы реализовать сортировку вставкой с использованием связанного списка, вы можете выполнить следующие действия:

  1. Создайте пустой отсортированный связанный список, в котором элементы будут храниться в отсортированном порядке.
  2. Перейти по заданному связанному списку, начиная с головного узла.
  3. Для каждого пройденного элемента найдите его правильное положение в отсортированном связанном списке, сравнив его с уже присутствующими элементами.
  4. Вставьте элемент в отсортированный связанный список в правильную позицию.
  5. Продолжайте просматривать исходный связанный список, пока все элементы не будут обработаны.

Вот реализация сортировки вставкой на языке Python с использованием связанного списка:

class Node:
    def __init__(self, data):
        self.data = data
        self.next = None
def insertionSortLinkedList(head):
    sorted_list = None
    current = head
    while current is not None:
        next_node = current.next
        sorted_list = sortedInsert(sorted_list, current)
        current = next_node
    return sorted_list
def sortedInsert(sorted_list, new_node):
    if sorted_list is None or sorted_list.data >= new_node.data:
        new_node.next = sorted_list
        sorted_list = new_node
    else:
        current = sorted_list
        while current.next is not None and current.next.data < new_node.data:
            current = current.next
        new_node.next = current.next
        current.next = new_node
    return sorted_list

Эта реализация сортирует связанный список в порядке возрастания. Он использует функцию sortedInsertдля вставки нового узла в отсортированный список в правильной позиции.