- •СТРУКТУРЫ ДАННЫХ И АЛГОРИТМЫ
- •Глава 1 Линейные списки
- •Понятие структуры данных
- •Тип указатель
- •Линейный список
- •Линейный однонаправленный (односвязный) список
- •Линейный двунаправленный (двусвязный) список
- •Практическое задание «Линейные списки»
- •Задачи для самостоятельной работы
- •Контрольные вопросы
- •Глава 2 Структуры данных стек и очередь
- •Понятие структуры данных стек и очередь
- •Структура данных стек
- •Структура данных очередь
- •Пример решения задачи с использованием стека
- •Практическое задание «Стеки и очереди»
- •Задачи для самостоятельной работы
- •Контрольные вопросы
- •Глава 3 Древовидные структуры данных
- •Понятие структуры данных дерево
- •Представление структуры бинарное дерево в памяти
- •Обход дерева
- •Основные операции над деревом
- •Ввод дерева
- •Практическое задание «Бинарные деревья»
- •Задачи для самостоятельной работы
- •Контрольные вопросы
- •Глава 4 Структура данных таблица
- •Понятие структуры данных таблица
- •Представление таблицы в памяти
- •Организация хеш-таблиц
- •Выбор функции расстановки
- •Разрешение коллизии
- •Операции над таблицами
- •Практическое задание «Управление таблицами»
- •Задачи для самостоятельной работы
- •Контрольные вопросы
- •Глава 5 Алгоритмы упорядочения данных
- •Понятие операции упорядочения
- •Алгоритмы упорядочения
- •Сортировка слиянием
- •Основные алгоритмы сортировки посредством сравнений
- •Улучшенные алгоритмы сортировки сравнением
- •Практическое задание «Алгоритмы сортировки»
- •Задачи для самостоятельной работы
- •Контрольные вопросы
- •Библиографический список
i++; j--;
}
}
*ri = i; *rj = j;
}
Quicksort(table *t, int L, int R)
{
if (R – L > порог)
{
Delete(t, L, R, &i, &j);
if (L < j) Quicksort(t, L, j); if (i < R) Quicksort(t, i, R);
}
else
прямое_включение(t, L, R);
}
ПРАКТИЧЕСКОЕ ЗАДАНИЕ «АЛГОРИТМЫ СОРТИРОВКИ»
Цели
Изучить основные алгоритмы упорядочения (сортировки) и сформировать навыки их программирования при решении задач с использованием сложных структур данных.
Варианты заданий
1Упорядочить таблицу, построенную в практическом задании «ТАБЛИЦЫ» (варианты 1.1а, 1.2а), по ключу (ключ для 1.1а – имя объекта; для 1.2а – значение константы) методом:
а) прямого включения; б) прямого выбора; в) прямого обмена;
118
г) методом Шелла; д) сортировки с использованием структуры дерево.
Используя раздел операторов, дополнить элементы таблицы числом раз использования каждого ключа. Для поиска элементов в таблице использовать:
а) последовательный поиск; б) бинарный поиск.
2Упорядочить таблицу, построенную в практическом задании «ТАБЛИЦЫ» (варианты 1.1а, 1.2а), по ключу (ключ для 1.1а – имя объекта; для 1.2а – значение константы) методом:
а) прямого включения; б) прямого выбора; в) прямого обмена; г) методом Шелла.
Используя раздел операторов, напечатать в порядке возрастания ключей элементы таблицы, описанные, но не используемые в программе. Для поиска элементов в таблице использовать:
а) последовательный поиск; б) бинарный поиск.
3Упорядочить таблицу, построенную в практическом задании «ТАБЛИЦЫ» (варианты 1.1б, 1.1в, 1.2б, 1.2в), по новому ключу – по не возрастанию частоты использования элемента методом:
а) прямого включения; б) прямого выбора; в) прямого обмена; г) методом Шелла.
119
Используя раздел операторов, дополнить элементы таблицы числом раз использования каждого ключа. Для поиска элементов в таблице использовать:
а) последовательный поиск; б) бинарный поиск.
4Упорядочить таблицу, построенную в практическом задании «ТАБЛИЦЫ» (вариант 2а), по не убыванию значений ключа методом:
а) быстрой сортировки;
б) сортировки с использованием структуры дерево; в) методом Шелла.
Включить информацию, хранимую в этой таблице, в таблицу продукции, имеющейся на складе. Таблица продукции упорядочена по возрастанию ключа. Элемент таблицы включает: шифр изделия (это ключ), наименование, количество (штук), цена (за штуку). Цену изделия брать из таблицы – прейскурант, элемент которой содержит: шифр изделия, цена (за штуку). Эта таблица также упорядочена по возрастанию шифров изделий. Для поиска элементов в таблице использовать:
а) последовательный поиск; б) бинарный поиск.
5Дополнить таблицу, построенную в практическом задании «ТАБЛИЦЫ» (варианты 2б, 2в), информацией о цене изделия. Цену изделия брать из таблицы – прейскурант, элемент которой содержит: шифр изделия, цена (за штуку). Эта таблица упорядочена по возрастанию шифров изделий. Упорядочить преобразованную таблицу по новому ключу – количество изделий методом:
а) прямого включения; б) прямого обмена; в) методом Шелла;
120
г) сортировки с использованием структуры дерево. Для поиска элементов в таблице использовать:
а) последовательный поиск; б) бинарный поиск.
6Упорядочить таблицу, построенную в практическом задании «ТАБЛИЦЫ» (вариант 3а), по убыванию процентов голосов, отданных командам – претендентам:
а) на первое место; б) на последнее место; в) на первую тройку.
Для упорядочения использовать метод: а) быстрой сортировки;
б) сортировки с использованием структуры дерево; в) методом Шелла.
7Упорядочить таблицу, построенную в практическом задании «ТАБЛИЦЫ» (варианты 3б, 3в), по новому ключу – по возрастанию номеров команд, не вошедших в претенденты ни на первое, ни на последнее место.
Для упорядочения использовать метод: а) быстрой сортировки;
б) сортировки с использованием структуры дерево;
в) методом Шелла.
Задачи для самостоятельной работы
1 Элемент таблицы характеризуется двумя признаками: один – это последовательность не более чем из 15 символов и этот признак – ключ, другой признак – вещественное значение. Определить тип «таблица» и написать подпрограмму:
121
а) упорядочения таблицы методом прямого включения и подсчитать число сравнений и перемещений, выполненных в процессе упорядочения;
б) упорядочения таблицы методом прямого выбора и подсчитать число сравнений и перемещений, выполненных в процессе упорядочения;
в) упорядочения таблицы методом прямого обмена и подсчитать число сравнений и перемещений, выполненных в процессе упорядочения;
г) упорядочения таблицы методом прямого обмена, который учитывает, что исходное множество является, возможно, частично упорядоченным, и подсчитать число сравнений и перемещений, выполненных в процессе упорядочения;
д) упорядочения таблицы методом прямого обмена, который учитывает, что исходное множество является, возможно, частично упорядоченным, и подсчитать число просмотров, сравнений и перемещений, выполненных в процессе упорядочения;
е) упорядочения таблицы методом слияния и подсчитать число сравнений и перемещений, выполненных в процессе упорядочения.
2Элемент таблицы характеризуется тремя признаками: один – вещественное значение, второй – целое положительное число и этот признак – ключ элемента, третий – это последовательность не более чем из 10 символов. Определить тип «таблица» и написать подпрограмму:
а) упорядочения таблицы методом прямого включения и подсчитать число просмотров и перемещений, выполненных в процессе упорядочения;
б) упорядочения таблицы методом прямого выбора и подсчитать число просмотров и перемещений, выполненных в процессе упорядочения;
122
в) упорядочения таблицы методом прямого обмена и подсчитать число сравнений и перемещений, выполненных в процессе упорядочения;
г) упорядочения таблицы методом прямого обмена, который учитывает, что исходное множество является, возможно, частично упорядоченным, и подсчитать число сравнений и перемещений, выполненных в процессе упорядочения;
е) упорядочения таблицы методом слияния и подсчитать число сравнений и перемещений, выполненных в процессе упорядочения.
3 |
В файле содержатся элементы таблицы следующего вида: |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
ФИО работника |
Табельный номер работника |
|
|
||
|
|
|
(38 символов) |
(10 символов) |
|
|
||
|
|
|
|
|
|
|
|
|
|
Количество элементов не превышает 300. Упорядочить таблицу |
|||||||
|
одним из прямых методов сортировки по возрастанию значений |
|||||||
|
ключа. Написать подпрограмму упорядочения таблицы. Ключ эле- |
|||||||
|
мента – табельный номер работника. Обосновать используемый |
|||||||
|
метод упорядочения. |
|
|
|
|
|
||
4 |
В файле содержатся элементы таблицы следующего вида: |
|||||||
|
|
|
|
|
|
|
||
|
|
|
ФИО |
Табельный номер |
Дата приема |
|
||
|
|
|
работника |
работника |
на работу |
|
||
|
|
|
(52 символа) |
|
(7 символов) |
(8 символов) |
|
|
|
|
|
|
|
|
|||
5 |
Количество элементов не превышает 300. Ключ элемента – табель- |
|||||||
|
ный номер работника. Упорядочить таблицу по возрастанию зна- |
|||||||
|
чений ключа. Написать подпрограмму упорядочения таблицы. Ис- |
|||||||
|
пользовать эффективный и устойчивый алгоритм сортировки. |
|||||||
6 |
Упорядочить прямоугольную матрицу порядка n x m (n, m 50) по |
|||||||
|
убыванию элементов j-го столбца матрицы. Для упорядочения ис- |
|||||||
|
|
|
|
|
123 |
|
|
|
пользовать метод прямого включения. Кроме того, подсчитать число сравнений и перемещений при упорядочении.
7Упорядочить прямоугольную матрицу порядка n x m (n, m 50) по убыванию элементов j-го столбца матрицы. Для упорядочения использовать метод прямого выбора. Кроме того, подсчитать число сравнений и перемещений при упорядочении.
8Упорядочить прямоугольную матрицу порядка n x m (n, m 50) по убыванию элементов i-й строки матрицы. Для упорядочения использовать метод прямого обмена. Подсчитать число сравнений при упорядочении.
9Написать подпрограмму упорядочения таблицы «Учет материалов». Таблица состоит из n элементов, n 50. Элемент имеет следующую структуру (размеры всех признаков фиксированы):
Наименование материала Цена Остаток
Размеры и тип признаков элемента таблицы определить самостоятельно, считая при этом, что «Наименование материала» состоит из трех слов, разделенных пробелом. Упорядочить таблицу по алфавиту по первым буквам слов «Наименование материала».
10В текстовом файле содержится информации о n студентах факультета. Информация об одном студенте имеет вид: ФИО, дата рождения, пол, средний балл аттестата (средний балл вычислен с точностью до целых). Информация упорядочена по ФИО. Упорядочить эту информацию по возрастанию среднего балла, используя эффективный и устойчивый метод сортировки, если n 200.
11Элементы в таблице, состоящей из n элементов (n 50), размещены по правилу корневого дерева, в корне каждого поддерева которого находится элемент со значением меньшим значений его потомков. Написать подпрограмму упорядочения таблицы по убыванию значений ключа. Элемент таблицы имеет следующий вид (размеры всех признаков фиксированы):
124
