Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LR4-6.doc
Скачиваний:
83
Добавлен:
10.03.2016
Размер:
474.11 Кб
Скачать

Задание 3

Задание: отсортировать массив указанным способом.

Указание к выполнению: выполнить все этапы решения задачи самостоятельно, использовать процедуры ввода и вывода массивов, выделить в задаче вспомогательные алгоритмы и оформить их в виде подпрограмм.

Виды сортировок

Сортировка выбором. Дана последовательность чисел a1, a2, ..an. Требуется переставить элементы так, чтобы они были расположены по убыванию. Для этого в массиве, начиная с k-го, выбирается наибольший элемент и меняется местами с k-м. Эта процедура выполняется для k= 1, 2, 3... n-1. При k=1 из всех элементов массива выбирается наибольший и меняется местами с k-м, т.е. с 1-м, таким образом, он занимает свое место. При k=2 из оставшихся (всех, кроме первого) выбирается максимальный элемент и меняется местами с k-м, т.е. со 2-м. Процедура эта повторяется, пока k не станет равно n-1. Тогда на последнем шаге из двух последних элементов выбирается максимальный, меняется местами с k-м, т.е. с (n-1)-м. После этого массив является отсортированным.

Сортировка методом «пузырька». Дана последовательность чисел a1, a2, ..an. Требуется переставить элементы так, чтобы они были расположены по возрастанию. Для этого из k элементов массива сравнивают каждую пару соседних элементов ai и ai+1. Если ai>ai+1, то их меняют местами. При первом прохождении массива самый большой элемент, как «пузырек», займет последнее место. Эта процедура выполняется для всех k=n, n-1, n-2, ...2.

Шейкер-сортировка. Эта сортировка является усовершенствованной сортировкой методом «пузырька» (внимательно прочитайте предыдущее описание). Просмотр массива осуществляется последовательно в двух направлениях. Сначала массив проходят в «прямом» направлении, сравнивают каждую пару соседних элементов и, если ai>ai+1, то их меняют местами. При этом элемент с самым большим значением перемещается вверх и занимает последнее место. Затем массив просматривается в обратном направлении, начиная уже с (n-1)-го элемента. Сравнивают каждую пару соседних элементов и, если ai<ai-1, то их меняют местами. При этом элемент с самым маленьким значением перемещается вниз и занимает первое место. Затем этот процесс повторяется, начиная со второго элемента и т.д.

Сортировка вставками. Дана последовательность чисел a1, a2, ..an. Требуется переставить элементы так, чтобы массив стал упорядоченным. Пусть k элементов массива уже являются упорядоченными. Берется следующее число ak+1 и вставляется в последовательность так, чтобы оказались упорядоченными уже k+1 элемент. Выполняем эту процедуру для k=1, 2, 3, ..., n-1. Иными словами, при k=1 считаем, что первый элемент стоит на своем месте. Берем (k+1)-й, т.е. 2-й элемент, и переставляем его так, чтобы по порядку стояли уже первые два элемента. При k=2 считаем, что два элемента стоят на своем месте. Берем (k+1)-й, т.е. 3-й элемент, и переставляем его так, чтобы первые три элемента были упорядочены. Повторяем эту процедуру, пока k не станет равно n-1. Тогда берем (k+1)-й, т.е. последний элемент, и переставляем его так, чтобы он занял свое место среди предыдущих уже упорядоченных элементов. После этого массив отсортирован.

Сортировка Шелла. Дана последовательность чисел a1, a2, ..an. Требуется переставить элементы так, чтобы они были расположены по неубыванию. Делается это следующим образом: сравниваются два соседних элемента ai и ai+1. Если aiai+1, то продвигаются на один элемент вперед, а если ai>ai+1, то их меняют местами и сдвигаются на один элемент назад.

Сортировка подсчетом. Дана последовательность чисел a1, a2, ..an. Требуется переставить элементы так, чтобы они были расположены по возрастанию. Выходной массив заполняется фиксированными значениями, заведомо отличными от элементов исходного массива, например, равными –1. Затем для каждого элемента исходного массива определяется его место в выходном массиве путем подсчета количества элементов строго меньших данного. Естественно, что все равные элементы попадают на одну позицию в выходном массиве, за которой будет следовать ряд значений –1. После того, как позиции всех элементов исходного массива определены, и они размещены в выходном массиве, все оставшиеся в выходном массиве элементы равные –1 заполняются копией предыдущего значения.

Вариант 1. Упорядочить массив по неубыванию Шейкер-сортировкой.

Вариант 2. Упорядочить массив по возрастанию методом выбора.

Вариант 3. Упорядочить массив по убыванию методом вставки.

Вариант 4. Упорядочить массив по невозрастанию методом «пузырька».

Вариант 5. Упорядочить массив по убыванию методом выбора.

Вариант 6. Упорядочить массив по возрастанию методом подсчета.

Вариант 7. Упорядочить массив по возрастанию методом Шелла.

Вариант 8. Упорядочить массив по неубыванию методом вставки.

Вариант 9. Упорядочить массив по неубыванию методом подсчета.

Вариант 10. Упорядочить массив по неубыванию методом «пузырька».

Вариант 11. Упорядочить массив по невозрастанию методом выбора.

Вариант 12. Упорядочить массив по возрастанию методом вставки.

Вариант 13. Упорядочить массив по убыванию Шейкер-сортировкой.

Вариант 14. Упорядочить массив по невозрастанию методом Шелла.

Вариант 15. Упорядочить массив по невозрастанию методом подсчета.

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