ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 2
Тема: «Сортировка методом прямого включения»
Цель: научиться сортировать по
возрастанию и убыванию одномерные массивы и массивы записей методом прямого
включения.
Ход работы
Теоретические
обоснования
В этой сортировке массив делится на две части: отсортированную и неотсортированную. На каждом шаге берется очередной элемент из неотсортированной части и «включается» в отсортированную часть массива.
Пусть отсортировано начало массива A[1], A[2], ..., A[i–1], а остаток массива A[i], ..., A[n] содержит неотсортированную часть. На очередном шаге будем включать элемент A[i] в отсортированную часть, ставя его на соответствующее место. При этом придется сдвинуть часть элементов, больших A[i], (если таковые есть) на одну позицию правее, чтобы освободить место для элемента A[i]. Но при сдвиге будет потеряно само значение A[i], поскольку в эту позицию запишется первый (самый правый – с самым большим индексом) сдвигаемый элемент. Поэтому прежде чем производить сдвиг элементов необходимо сохранить значение A[i] в промежуточной переменной.
Так как массив из одного элемента можно считать отсортированным, начнем с i = 2.
Выглядит это в виде следующей процедуры:
procedure InsertSort(n: integer;
var A: array[1..n] of integer);
{Процедура сортировки простым включением}
var i, j, Tmp: integer;
begin
for i := 2 to n do begin
{Сохраняем текущий элемент}
Tmp := A[i];
{Сдвигаем элементы,
большие, чем текущий}
j := i;
while (A[j-1] > Tmp) and (j
> 1) do begin
A[j] := A[j-1];
j := j-1;
end;
{Вставляем текущий элемент}
A[j] := Tmp;
end;
end;

Задание 1. Выполнить
сортировку в одномерном массиве. Массив заполнить случайными числами, вывести исходный
массив, выполнить сортировку методом прямого включения, вывести отсортированный
массив.
Задание 2. Дан
массив записей, каждая запись описывается свойствами: марка автомобиля, год
выпуска, стоимость. Выполнить сортировку в массиве записей по полю год рождения
по возрастанию. Выполнить сортировку по полю стоимость по убыванию. Заполнить
массив записей, вывести исходный массив в табличном виде, выполнить две
сортировки методом прямого включения, вывести результат сортировки в табличном
виде, записать результат сортировки в файл, проверить запись в файл
(осуществить считывание записей из файла и вывод их на экран).
Выполнение задания 1 и 2.
Решение задач осуществляется аналогично примеру, рассмотренному в 1 практической работе.
1. Выполнить сортировку в одномерном
массиве.
2. Выполнить сортировку в двумерном
массиве по столбцам.
3. Выполнить сортировку в двумерном
массиве по строкам.
4. Известны данные о сотрудниках фирмы:
фамилия и отношение к воинской службе (военнообязанный или нет), год рождения. Заполнить
массив записей. Вывести на экран исходные данные в табличном виде. Выдать на
экран меню с выбором сортировки:
1 - Сортировка по полю год рождения.
2 - Сортировка военнообязанных по полю год
рождения.
Выдать на экран отсортированные
данные в табличном виде.