- •Вопросы к экзамену по курсу «Основы алгоритмизации и программирования» иСиТ- I 2010/2011
- •Пирамидальная сортировка. Сортировка слиянием (однократное и циклическое слияние(?)).
- •Стек. Основные базисные операции для работы со стеком. Организация стека на основе массива и связного списка.
- •Очередь. Основные операции для работы с очередью.
- •Очередь с приоритетом. Основные операции для работы с приоритетной очередью
- •Деки. Логическая структура дека.
- •Списки как динамические структуры данных. Виды линейных списков. Способы формирования односвязных списков. Оценка сложности.
- •Алгоритмы вычисления хэш-функции.
Вопросы к экзамену по курсу «Основы алгоритмизации и программирования» иСиТ- I 2010/2011
Основы теории сложности. Классы сложности : NP, P.
Трудоемкость – кол-во элементарных операций, которых необходимо выполнить для решения задачи с помощью данного алгоритма.
Сложность алгоритма (О большое) – оценка функции трудоемкости, определяет как быстро растет трудоемкость алгоритма с увеличением объема данных.
К классу сложности Р относятся задачи, которые могут быть решены за время, полиномиально зависящее от исходных данных с помощью детерминированной машины(например машины Тьюринга), а к классу NР – с помощью недетерминированной.
Класс Р содержится в классе NP.
Сортировка и поиск. Проверка упорядоченности массива. Способы сортировки.
Сортировка – процесс упорядочивания набора элементов в возрастающем или убывающем порядке.
Алгоритмы поиска : последовательный, бинарный(в упорядоченных массивах).
Сортировки по размещению : внутренние(в памяти), внешние(в файле).
Ключ – часть элемента данных, которая используется для его идентификации и поиска среди других таких же элементов.
Обменная сортировка (метод «пузырька» , шейкер- сортировка).
Необязательно все просмотры делать в одном направлении, каждый последующий в противоположном направлении и фиксировать границы неупорядоченной части.
Сортировка разделением (быстрая сортировка) Распределяющая сортировка.(?)
Разделением – берем 1-ый эл-т, сортируем относительно него массив, получаем левую и правую часть, этот же алгоритм рекурсивно применяем к каждой части и так пока есть перестановки.
Сортировка подсчетом. Сортировка выбором (прямой выбор, линейный выбор, квадратичная).
Подсчетом - считается для каждого эл-та кол-во меньших и это его индекс.
Прямой – минимальное меняем с начальным и так до конца.
Квадратичная – берем корень из кол-ва эл-тов, после эл-та с этим индексом граница, с левой и правой части мин, потом из этих мин и в исходный, опять из левой и правой мин, потом из этих мин в исходный и так пока есть эл-ты.
Сортировка вставками. (Простая вставка, вставка погружением, метод Шелла)
Простая – массив делится на 2 части : неупорядоченная и упорядоченная, берется первый эл-т из неупорядоченной, вставляется в упорядоченную на своё место, затем опять 1 из неупорядоченной в упорядоченную и т.д.
Погружением – очередной эл-т путем ряда обменов погружается до требуемой позиции в уже упорядоченную часть массива.
Шелла – кол-во эл-тов делится на 2, это шаг, с этим шагом выбираются эл-ты, которые будут меняться, потом от них выбираются эл-ты правее и меняются, если есть ещё правее. Затем шаг уменьшается на 1 и процедура повторяется пока шаг не станет 1 и перестановок больше не будет.
Пирамидальная сортировка. Сортировка слиянием (однократное и циклическое слияние(?)).
Пирамидальная – состоит из 2-х фаз: построение пирамиды и сортировка.
Однократное - массив разбивается на n частей, каждая сортируется независимо, затем они объединяются слиянием.
Циклическое - массив разделяется на n последовательностей. Затем в каждой из них выбирается по одному элементу (первому) в таком порядке, чтобы получилась упорядоченная группа из n элементов, которая запоминается в выходной последовательности (слияние). Выходная последовательность будет состоять из групп по n элементов, каждая из которых упорядочена. Далее файл опять распределяется, но уже группами по n элементов по тем же самым n входным последовательностям. В результате слияния образуются упорядоченные группы из n*n элементов. Затем процесс повторяется группами по n*n*n и т.д.