Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Варианты_заданий_К_Р.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
128 Кб
Скачать

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],

г) соедините эти два подмассива в один отсортированный массив.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]