- •050201 «Системная инженерия»
- •Содержание
- •Цели и задачи практики
- •Структура отчета по практике
- •3 Задание №2 Сортировка массива указателей
- •Задание № 1 Сортировка массива записей
- •Постановка задачи
- •Прямые методы сортировки. Краткие теоретические сведения
- •Сортировка прямым включением
- •Сортировка прямым выбором
- •Сортировка прямым обменом (метод пузырька)
- •Задание № 2 Сортировка массива указателей на записи
- •Постановка задачи
- •Краткие теоретические сведения
- •Пример программы
- •Приложение а Пример файла с информацией о студенческой группе
Задание № 1 Сортировка массива записей
Постановка задачи
Необходимо спроектировать и отладить программу, осуществляющую:
– ввод данных в массив записей из текстового файла;
– сортировку массива по заданному ключу;
– вывод отсортированного массива в текстовый файл в прямом и обратном порядке.
Варианты заданий приведены в таблице 3.1.
Исходными данными задачи являются сведения о студентах группы: фамилия, оценка за модуль №1, оценка за модуль №2, оценка за модуль №3. Все данные хранятся в файле текстового типа. Информация о каждом студенте записана в одной строке: по 20 позиций для фамилии, инициалов и по 5 позиций для каждого числа. Эту информацию необходимо считать из текстового файла в массив записей. Каждая запись массива содержит поле типа String[20] и три поля типа Integer.
Данные из массива записей необходимо отсортировать по заданному ключу сортировки с использованием метода сортировки, определяемого вариантом задания. Алгоритм сортировки требуется реализовать в виде отдельной процедуры.
Таблица 3.1 – Варианты заданий
Номер варианта |
Ключ сортировки |
Метод сортировки |
1 2 3 4 5 6 7 8 9 10 11 12 |
Фамилия Фамилия Фамилия Оценка за модуль №1 Оценка за модуль №1 Оценка за модуль №1 Оценка за модуль №2 Оценка за модуль №2 Оценка за модуль №2 Оценка за модуль №3 Оценка за модуль №3 Оценка за модуль №3 |
Прямое включение Прямой выбор Прямой обмен Прямое включение Прямой выбор Прямой обмен Прямое включение Прямой выбор Прямой обмен Прямое включение Прямой выбор Прямой обмен |
Прямые методы сортировки. Краткие теоретические сведения
Сортировкой называется переупорядочение некоторого множества элементов.
Пусть тип сортируемых элементов определен как
Type item = record
Key: integer;
{другие поля}
end;
Здесь key – ключ сортировки – поле, по которому осуществляется сортировка.
А массив сортируемых элементов определен как
Var a: array[1..n] of item;
Сортировка прямым включением
Элементы делятся на две части: “отсортированную” и неотсортированную. При каждом шаге, начиная с i = 2 и увеличивая i каждый раз на единицу, из неотсортированной последовательности извлекается i-ый элемент и включается (помещается на нужное место) в отсортированную последовательность.
Итак, алгоритм сортировки состоит из n-1 шага. На первом шаге величина i=2. Массив представляется в виде двух частей – отсортированной (это часть массива с индексами от 1 до i-1) и неотсортированной (с индексами от i до n). Далее из неотсортированной части массива выбирается i-тый элемент и (включается) помещается на нужное место в отсортированную часть массива. Все остальные шаги выполняются аналогично.
Поиск места в отсортированной последовательности может закончиться при двух различных условиях:
1) Найден элемент с ключом меньшим, чем ключ х
2) Достигнут левый конец готовой последовательности
Это типичный пример цикла с двумя условиями. Чтобы заменить проверку двух условий одним, рассмотрим известный прием фиктивного элемента («барьера»). Его можно легко применить в этом случае, установив барьер a0 = x. Для этого нужно расширить диапазон индексов в описании массива а до 0, ..., n.
