
- •Варианты заданий для курсового проектирования по дисциплине ен.Ф.02 – «Информатика и программирование».
- •II семестр изучения, раздел «Структуры данных и прикладные алгоритмы»
- •Часть 1. Задачи на структуры данных
- •16. Моделирование системы массового обслуживания.
- •17. Моделирование системы массового обслуживания.
- •Часть 2. Прикладные алгоритмы
- •3.1.2.1.3.4. Сортировка с вычислением адреса
- •3.1.2.1.3.5. Сортировка двухпутевыми вставками
- •3.1.2.2.1. Простой выбор
- •3.1.2.2.3. Задачи на сортировки выбором.
- •3.1.2.2.3.3. Сортировка методом квадратичного выбора.
- •3.1.2.3.1. Простой обмен (пузырьковая сортировка)
- •3.1.2.3.3.5. Сортировка методом подсчета
- •3.1.2.3.3.6. Сортировка методом распределяющего подсчета
- •3.1.2.3.3.7. Сортировка методом четных и нечетных транспозиций
- •3.1.2.4.1. Сортировка слиянием
- •3.1.2.4.4. Задачи на другие сортировки
- •3.1.2.4.4.1. Объединение массивов
- •3.1.2.4.4.2. Бинарное слияние
- •3.1.2.4.4.3. Рекурсивное слияние
- •3.1.2.4.4.4. Естественное слияние
- •3.1.3.1.1.1. Метод перемещения в начало.
- •3.1.3.1.1.2. Метод транспозиции.
- •3.1.3.5.2. Поиск в двусвязном списке
3.1.2.3.3.6. Сортировка методом распределяющего подсчета
Предположим, что некоторый массив mas содержит целые числа в диапазоне от а до b, причем многие числа повторяются несколько раз. Сортировка методом распределяющего подсчета выполняется следующим образом. Заводится вспомогательный массив number размером b–а + 1 и элементу number[i – a + 1] присваивается значение, равное тому, сколько раз число i появляется в исходном массиве. Затем значения в массиве соответственно переустанавливаются. Напишите программу для сортировки некоторого массива mas размером n, содержащего целые числа в диапазоне от а до b, используя этот метод.
3.1.2.3.3.7. Сортировка методом четных и нечетных транспозиций
Выполняются несколько раз просмотры исходного массива mas. На первом просмотре сравнивайте mas[i] с mas [i + 1] для всех нечетных i. На втором просмотре сравнивайте mas[i] с mas[i + 1] для всех четных i. Каждый раз, когда mas[i] > mas [i + 1] выполняйте транспозицию этих двух элементов. Продолжайте эти просмотры до тех пор, пока массив не будет отсортирован.
Что является условием окончания этой сортировки?
Напишите программу, реализующую эту сортировку.
3.1.2.4.1. Сортировка слиянием
Слияние является процессом объединения двух или более отсортированных массивов в некоторый третий отсортированный массив.
3.1.2.4.4. Задачи на другие сортировки
3.1.2.4.4.1. Объединение массивов
Рассмотрим следующий метод объединения упорядоченных массивов а и b в массив с. Выполним бинарный поиск элемента b[1] в массиве а. Если b[1] находится между a[i] и a[i + 1], то выводим элементы от а[1] до a[i] в массив с, затем запишем элемент b[1] в массив с. Далее выполним бинарный поиск элемента b[2] в подмассиве с элементами от a[i + 1] до а[iа] (где iа является числом элементов в массиве а) и повторим процесс вывода. Повторим эту процедуру для каждого элемента в массиве b.
Напишите программу, реализующую этот метод.
3.1.2.4.4.2. Бинарное слияние
Рассмотрим следующий метод объединения отсортированных массивов а и b в массив с (называемый бинарным слиянием). Пусть 1а и 1b будут числом элементов в массивах а и b соответственно, и предположим, что 1а ≥ 1b. Разделим массив а на 1b + 1 примерно равных подмассивов. Сравним b[1] с наименьшим элементом во втором подмассиве массива а. Если b[1] меньше, тогда найдем a[i] такой, что a[i] ≤ b[1] ≤ a[i + 1], при помощи бинарного поиска в первом подмассиве. Выведем в массив с все элементы первого подмассива до элемента a[i] включительно, а затем выведем в массив с элемент b[1]. Повторим этот процесс для элементов b[2], b[3], ..., b[j], где b[j] оказывается элементом большим, чем наименьший элемент во втором подмассиве. Выведем в массив с все оставшиеся элементы из первого подмассива и первый элемент из второго подмассива. Затем сравним b[j] с наименьшим элементом в третьем подмассиве массива а и т. д.
Напишите программу, реализующую бинарное слияние.
3.1.2.4.4.3. Рекурсивное слияние
Напишите программу, которая реализует рекурсивный алгоритм сортировки некоторого массива mas следующим способом:
а) пусть k будет индексом среднего элемента в данном массиве,
б) отсортируйте элементы до элемента mas[k] и включая его,
в) отсортируйте элементы после mas[k],
г) соедините эти два подмассива в один отсортированный массив.