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

    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

Прямое включение

Прямой выбор

Прямой обмен

Прямое включение

Прямой выбор

Прямой обмен

Прямое включение

Прямой выбор

Прямой обмен

Прямое включение

Прямой выбор

Прямой обмен

    1. Прямые методы сортировки. Краткие теоретические сведения

Сортировкой называется переупорядочение некоторого множества элементов.

Пусть тип сортируемых элементов определен как

Type item = record

Key: integer;

{другие поля}

end;

Здесь key – ключ сортировки – поле, по которому осуществляется сортировка.

А массив сортируемых элементов определен как

Var a: array[1..n] of item;

      1. Сортировка прямым включением

Элементы делятся на две части: “отсортированную” и неотсортированную. При каждом шаге, начиная с i = 2 и увеличивая i каждый раз на единицу, из неотсортированной последовательности извлекается i-ый элемент и включается (помещается на нужное место) в отсортированную последовательность.

Итак, алгоритм сортировки состоит из n-1 шага. На первом шаге величина i=2. Массив представляется в виде двух частей – отсортированной (это часть массива с индексами от 1 до i-1) и неотсортированной (с индексами от i до n). Далее из неотсортированной части массива выбирается i-тый элемент и (включается) помещается на нужное место в отсортированную часть массива. Все остальные шаги выполняются аналогично.

Поиск места в отсортированной последовательности может закончиться при двух различных условиях:

1) Найден элемент с ключом меньшим, чем ключ х

2) Достигнут левый конец готовой последовательности

Это типичный пример цикла с двумя условиями. Чтобы заменить проверку двух условий одним, рассмотрим известный прием фиктивного элемента («барьера»). Его можно легко применить в этом случае, установив барьер a0 = x. Для этого нужно расширить диапазон индексов в описании массива а до 0, ..., n.

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