Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Структуры данных ответы на экз.docx
Скачиваний:
2
Добавлен:
13.12.2025
Размер:
46 Кб
Скачать
☆
  1. Массивы и сортировка массивов. Сортировка Шелла.Алг. Сложность

Сортировка Шелла — это улучшенная версия сортировки вставками. Вместо сравнения только соседних элементов, сначала сравниваются и сортируются элементы, находящиеся на определённом расстоянии (шаге) друг от друга. Шаг постепенно уменьшается (обычно вдвое), и последний проход выполняется с шагом 1 — это уже обычная сортировка вставками.

Алгоритмическая сложность:

В лучшем случае: O(n log n)

В среднем случае: O(n³/²) (т.е. примерно O(n√n))

В худшем случае: O(n²)

  1. Массивы и сортировка массивов. Быстрая сортировка. Алг. Сложность

Быстрая сортировка (QuickSort) — это рекурсивный алгоритм «разделяй и властвуй». Как работает:

  1. Выбирается опорный элемент (pivot) — например, первый, последний, случайный или медиана.

  2. Массив разбивается на две части:

элементы меньше опорного, элементы больше или равны опорному.

  1. Рекурсивно сортируются обе части.

  2. Процесс продолжается, пока подмассивы не станут длиной ≤ 1.

Алгоритмическая сложность (по файлу):

  • В лучшем и среднем случаях: O(n log n) — при удачном выборе опорного элемента.

  • В худшем случае: O(n²) — например, если массив уже отсортирован и опорным всегда выбирается первый/последний элемент.

  1. Списки. Виды списков. Организация списков при помощи массивов.

1. Что такое список?

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

2. Виды списков

Согласно лекции, выделяют три основных вида списков:

  1. Односвязный (линейный) список каждый узел содержит:

  • данные (value);

  • указатель на следующий узел (ptr или next).

  • Движение по списку возможно только в одном направлении — от начала к концу.

  1. Двусвязный список каждый узел содержит:

  • данные (val);

  • указатель на следующий (next);

  • указатель на предыдущий (prev) узел.

  • Позволяет обход в обоих направлениях.

  1. Циклический список

  • Последний узел указывает на первый, образуя кольцо.

  • Может быть как односвязным, так и двусвязным.

  • Требуется отдельно хранить указатель на головной (начальный) элемент.

  1. Организация списков при помощи массивов

Список можно реализовать двумя способами через массивы:

  1. Просто линейный массив с ограниченной размерностью.

  1. Будет создан алгоритм с начальным массивом с заданым размером и если в него не помещаются элементы ,то будет создаваться новый массив в который будут копироватся элементы старого и так до бесконечности чтобы список был динамическим.

Реализация через динамические структуры:

  1. Если мы реализуем список через кучу то мы просто создаем узел - первое число в списке ,а от этого узла ко всем остальным узлам добавляем ссылки на них

чтобы вывести нужно будет сделать цикл в котором будет бегунок который пробежится по всем ссылкам и выведет каждый элемент.

так же если мы реализуем список через кучу то у нас данные списка хранятся не в 1 месте а разбросаны по разным участкам оперативной памяти