
- •( Для студентов, обучающихся по направлению подготовки 6.050101 ”Компьютерные науки”)
- •( Для студентов, обучающихся по направлению подготовки 6.050101 ”Компьютерные науки”)
- •Введение
- •Классификация структур данных
- •Структура оперативной памяти
- •Лабораторная работа 1 методы сортировки постоянных таблиц и поиска в таблицах
- •Методические указания к выполнению работы
- •Определение операции сортировки
- •Линейный выбор (сортировка выбором)
- •Линейный выбор с подсчетом
- •Метод "пузырька"
- •{Описание типов}
- •Шейкер – сортировка
- •Метод вставки с прямым включением
- •Метод вставки с бинарным включением
- •Метод двухпутевой вставки
- •Метод Шелла
- •"Быстрая" сортировка (обменная сортировка с разделением)
- •Метод простого двухпутевого слияния (сортировка слиянием)
- •Метод естественного слияния (сортировка слиянием)
- •Дихотомический поиск по совпадению
- •Дихотомический поиск нескольких записей
- •Дихотомический поиск по близости
- •Дихотомический поиск по интервалу
- •Задание к лабораторной работе
- •Варианты заданий
- •Требования к выполнению лабораторной работы
- •Контрольные вопросы
- •Литература
- •Приложение а Примеры программ, выполняющих сортировку таблицы методом линейного выбора
- •Программа на языке с
- •Приложение в краткое описание системы turbo pascal
- •1. Структура pascal-программы
- •2. Простые типы
- •3. Составные типы
- •4. Операторы
- •5. Процедуры и функции
- •6. Файлы
- •7. Управление консолью
- •Содержание
- •Методические указания и задания
- •К лабораторным работам по курсу
- •«Алгоритмы и структуры данных»
- •(Для студентов обучающихся по направлению подготовки 6.050101 ”Компьютерные науки”)
Линейный выбор (сортировка выбором)
Согласно методу сортировки линейным выбором, начиная с первой записи таблицы (i=1), осуществляется поиск записи, имеющей наименьшее значение ключа (j=i, i+1, …n). После того, как эта запись найдена, она меняется местами с первой записью таблицы. В результате такой перестановки запись с наименьшим значением ключа помещается в первую позицию и в дальнейшем не рассматривается. Если же наименьшее значение ключа, имеет первая запись, то перестановка не нужна. Затем, начиная со второй записи таблицы (i=2), осуществляется поиск второго наименьшего ключа. Найденная запись меняется местами со второй записью. Этот процесс заканчивается поиском места для предпоследней записи таблицы (i=n-1). После этого все записи будут расположены в порядке возрастания кодов ключа.
Число
сравнений в данном методе равно
(в среднем порядка
).
Максимальное количество перестановок
– (n-1),
причем эти величины не зависят от
исходного состояния ключей.
В качестве примера рассмотрим сортировку таблицы со следующими значениями ключей:
23 11 4 56 9 35 7
Ниже показаны этапы сортировки (перемещаемые элементы подчеркнуты):
1: 23 11 4 56 9 35 7
2: 4 11 23 56 9 35 7
3: 4 7 23 56 9 35 11
4: 4 7 9 56 23 35 11
5: 4 7 9 11 23 35 56
6: 4 7 9 11 23 35 56
Программа сортировки таблицы методом линейного выбора приведена в приложении А.
Линейный выбор с подсчетом
Число перестановок, необходимое для сортировки выбором, можно значительно сократить, если использовать для каждого ключа счетчик относительной позиции (метод линейного выбора с подсчетом). При такой модификации требуется дополнительная память для результирующей (упорядоченной) таблицы и массива счетчиков.
Просмотр таблицы начинается с первой записи (i=1,2, …n-1). Ее ключ сравнивается с ключами последующих записей (j=i+1, i+2,…n). При этом счетчик большего из сравниваемых ключей увеличивается на 1. При втором просмотре таблицы первый ключ уже не рассматривается, второй ключ сравнивается со всеми последующими. Результаты сравнений фиксируются в счетчиках.
Для таблицы, содержащей n записей, этот процесс повторяется (n-1) раз. После выполнения всех просмотров счетчик каждого элемента указывает, какое количество ключей таблицы меньше ключа этого элемента. Эти счетчики используются затем в качестве индексов элементов результирующей таблицы. Поместив записи в результирующую таблицу в соответствии со значениями их счетчиков, получим упорядоченную таблицу. В процессе сортировки выполняется (n-1) просмотров таблицы с n/2 сравнениями в среднем при каждом просмотре. Значения счетчиков изменяются столько раз, сколько выполняется сравнений. Рассмотрим пример использования этого метода. Ключи записей и массив счетчиков имеют вид:
-
Индексы
Ключи
Счетчики
0
9
0
1
5
0
2
10
0
3
2
0
Изменение массива счетчиков в результате просмотров:
1-й просмотр |
2-й просмотр |
3-й просмотр |
Результирующая таблица (ключи) |
2 |
2 |
2 |
2 |
0 |
1 |
1 |
5 |
1 |
2 |
3 |
9 |
0 |
0 |
0 |
10 |