Итоговая контрольная работа
Итоговая контрольная работа:
Контест по ссылке: http://judge2.vdi.mipt.ru/cgi-bin/new-client?contest_id=29211
Список вопрос к весеннему зачёту
Первая часть вопросов (алгоритмы — с реализацией)
- Представление вещественных чисел в памяти ПК. Cтандарт IEEE 754-2008. Типы чисел в С++. Арифметические операции. Обработка последовательностей: подсчёт, сумма, произведение, поиск максимального.
- Логический тип и логические операции. Проверка последовательности чисел на наличие элемента с заданными свойствами и на соответствие всех элементов заданному свойству.
- Операторы присваивания. Инициализация переменной при поиске максимума и минимума. Поиск местоположения максимума в последовательности за один проход.
- Отказ от инициализации переменной для максимума. Поиск максимума и подсчёт количества элементов, равных максимальному.
- Вложенные и каскадные условные конструкции. Нахождение трёх максимальных элементов в последовательности за один проход.
- Цикл for. Оператор break. Проверка простоты числа. Метод грубой силы.
- Цикл while. Оператор continue. Разложение числа на множители. Метод грубой силы.
- Операторы new и delete для массива. Решето Эратосфена.
- Обычные двумерные массивы в С++. Транспонирование матрицы. Умножение матриц.
- Типы целых чисел с явно заданной разрядностью в С++. Проверка упорядоченности массива. Сортировка подсчётом.
- Типы строки в С++. Сортировка дурака и сортировка методом пузырька.
- Локальные и глобальные переменные. Динамическая память. Указатель в никуда. Разыменование и взятие адреса. Ошибки при работе с памятью. Сортировка выбором.
- Адреса и указатели. Двойные указатели. Бестиповые указатели. Размер указателя в байтах. Динамические двухмерные массивы.
- Адресная арифметика и доступ к элементам одномерного массива. Сортировка вставками.
- Функции в С++. Стек локальных переменных. Передача аргумента по значению и по указателю. Поиск корня уравнения методом двоичного поиска.
- Передача массива в функцию и проблема возврата массива из функции. Передача в функцию двумерного массива. Линеаризация двумерного массива ручным расчётом индекса.
- Структуры struct (пользовательские типы данных). Размер структуры в байтах. Массив, структура и указатель как поля структуры. Указатель на структуру. Оператор "стрелка". Массив структур. Устойчивость сортировок.
- Стек и очередь.
- Расширяемый массив (std::vector). Асимптотика доступа к произвольному элементу, добавления элемента в конец, добавления элемента в начало. Реализации стека и очереди на std::vector.
- Контейнер std::list. Доступ к элементам через итератор. Цикл for C++11. Асимптотика доступа к произвольному элементу, добавления элемента в конец, добавления элемента в начало. Реализации стека и очереди на std::list.
Вторая часть вопросов (алгоритмы "на пальцах", без реализации)
- Односвязный список. Асимптотика доступа к произвольному элементу, добавления элемента в конец, добавления элемента в начало.
- Двухсвязный список. Асимптотика доступа к произвольному элементу, добавления элемента в конец, добавления элемента в начало.
- Бинарный поиск в упорядоченном массиве.
- Поразрядная сортировка.
- Рекурсия. Крайний и рекуррентный случаи. Рекуррентный алгоритм Евклида.
- Рекурсия. Быстрое возвдение в степень.
- Рекурсия. Дерево вызовов. Ханойские башни.
- Рекурсия. Рекурсивная генерация всех чисел длины M.
- Генерация всех перестановок в массиве.
- Принцип "Разделяй и властвуй". Умножение Карацубы.
- Быстрая сортировка Тони Хоара. Выбор опорного элемента.
- Сортировка слиянием. Асимптотика по памяти.
- Динамическое программирование.
- Кузнечик: количество траекторий.
- Кузнечик: траектория минимальной стоимости.
- Алгоритм укладки рюкзака (дискретный).
- Наибольшая возрастающая подпоследовательность.
- Вычисление расстояния Левенштейна.
- Наибольшая общая подпоследовательность.
- Префикс-функция. Алгоритм Кнута-Морриса-Пратта.
- Асимптотики. Привести примеры алгоритмов О(1), О(N), O(logN), O(NlogN), O(N^2) и т.д.