Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа по прямым методам сортировк...doc
Скачиваний:
4
Добавлен:
04.09.2019
Размер:
123.9 Кб
Скачать

2

«УТВЕРЖДАЮ»

Ректор университета

_________________А.В. Лагерев

«________»_____________2006г.

Алгоритмические языки и программирование Прямые методы сортировки данных

Методические указания к выполнению лабораторной работы №10

для студентов дневной формы обучения

специальностей 075300 – "Организация и технология

защиты информации",

220300 – "Системы автоматизированного проектирования"

Брянск 2006

УДК 004.43

Алгоритмические языки и программирование. Прямые методы сортировки данных: методические указания к выполнению лабораторной работы №10 для студентов дневной формы обучения специальностей 075300 – "Организация и технология защиты информации", 220300 – "Системы автоматизированного проектирования".– Брянск: БГТУ, 2006. - 8 с.

Разработал: Ю.А. Леонов, асс.

Научный редактор Ю.М. Казаков

Редактор издательства Л.И. Афонина

Компьютерный набор Ю.А. Леонов

Рекомендовано кафедрой «Компьютерные технологии и системы» БГТУ (протокол № от )

Темплан 2006г., п.

Подписано в печать Формат 60х84 1/16. Бумага офсетная. Офсетная печать.

Усл. печ. л. 0,46 Уч. – изд. л. 0,46 Тираж 50 экз. Заказ Бесплатно

Брянский государственный технический университет.

Брянск, бульвар 50-летия Октября, 7, тел. 55-90-49.

Лаборатория оперативной полиграфии БГТУ, ул. Институтская, 16

  1. Цель работы

Целью работы является изучение прямых методов сортировки и приобретение практических навыков в программировании данных методов.

Продолжительность работы – 1ч.30мин.

  1. Теоретическая часть

Сортировка данных

При решении задачи сортировки обычно выдвигается требование минимального использования дополнительной памяти, из которого вытекает недопустимость применения дополнительных массивов.

Для оценки быстродействия алгоритмов различных методов сортировки, как правило, используют два показателя:

  • количество присваиваний;

  • количество сравнений.

Все методы сортировки можно разделить на две большие группы:

  • прямые методы сортировки;

  • улучшенные методы сортировки.

Прямые методы сортировки по принципу, лежащему в основе метода, в свою очередь разделяются на три подгруппы:

  1. сортировка вставкой (включением);

  2. сортировка выбором (выделением);

  3. сортировка обменом («пузырьковая» сортировка).

Улучшенные методы сортировки основываются на тех же принципах, что и прямые, но используют некоторые оригинальные идеи для ускорения процесса сортировки. Прямые методы на практике используются довольно редко, т.к. имеют низкое быстродействие относительно улучшенных методов. Однако они хорошо показывают суть основанных на них улучшенных методов. Кроме того, в некоторых случаях (как правило, при небольшой длине массива и/или особом исходном расположении элементов массива) некоторые из прямых методов могут даже превзойти улучшенные методы.

Разберем подробно прямые методы сортировки.

Сортировка вставкой

Принцип метода:

Массив разделяется на две части: отсортированную и неотсортированную. Элементы из неотсортированной части поочередно выбираются и вставляются в отсортированную часть так, чтобы не нарушить в ней упорядоченность элементов. В начале работы алгоритма в качестве отсортированной части массива принимают только один первый элемент, а в качестве неотсортированной части – все остальные.

Таким образом, алгоритм будет состоять из (n-1)-го прохода (n – размерность массива), каждый из которых будет включать четыре действия:

  • взятие очередного i-го неотсортированного элемента и сохранение его в дополнительной переменной;

  • поиск позиции j в отсортированной части массива, в которой присутствие взятого элемента не нарушит упорядоченности элементов;

  • сдвиг элементов массива от (i-1)-го до j-го вправо, чтобы освободить найденную позицию вставки;

  • вставка взятого элемента в найденную j-ю позицию.

Для реализации метода поиска места вставки и метода сдвига элементов можно использовать различные алгоритмы. В данном материале они рассматриваться не будут. Мы предлагаем вам использовать самые простые алгоритмы. Для поиска места вставки используйте следующий алгоритм:

  • взятие текущего элемента из отсортированной части массива;

  • сравнение текущего элемента со значением, сохраненным в дополнительной переменной;

  • если сохраненный элемент меньше чем текущий, значит местом вставки будет предыдущая ячейка (в случае сортировки по возрастанию).

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

3

1

9

2

5

7

1

3

9

2

5

7

1

3

9

2

5

7

1

2

3

9

5

7

1

2

3

5

9

7

1

2

3

5

7

9

Пример:

Сортировка выбором

Принцип метода:

Находим (выбираем) в массиве элемент с минимальным значением на интервале от 1-го элемента до n-го (последнего) элемента и меняем его местами с первым элементом. На втором шаге находим элемент с минимальным значением на интервале от 2-го до n-го элемента и меняем его местами со вторым элементом. И так далее для всех элементов до n-1-го.

Пример:

5

11

3

7

1

4

2

9

1

11

3

7

5

4

2

9

1

2

3

7

5

4

11

9

1

2

3

7

5

4

11

9

1

2

3

4

5

7

11

9

1

2

3

4

5

7

11

9

1

2

3

4

5

7

11

9

1

2

3

4

5

7

9

11

Сортировка обменом («пузырьковая» сортировка)

Принцип метода:

Слева направо поочередно сравниваются два соседних элемента, и если их взаиморасположение не соответствует заданному условию упорядоченности, то они меняются местами. Далее берутся два следующих соседних элемента и так далее до конца массива.

После одного такого прохода на последней n-ой позиции массива будет стоять максимальный элемент («всплыл» первый «пузырек»). Поскольку максимальный элемент уже стоит на своей последней позиции, то второй проход обменов выполняется до n-1-го элемента. И так далее. Всего требуется n-1 проход.

Пример:

5

11

3

7

1

4

2

9

5

3

7

1

4

2

9

11

3

5

1

4

2

7

9

11

3

1

4

2

5

7

9

11

1

3

2

4

5

7

9

11

1

2

3

4

5

7

9

11

1

2

3

4

5

7

9

11

1

2

3

4

5

7

9

11

Сравнение прямых методов сортировки

Теоретические и практические исследования алгоритмов прямых методов сортировки показали, что как по числу сравнений, так и по числу присваиваний они имеют квадратичную зависимость от длины массива n. Исключение составляет метод выбора, который имеет число присваиваний порядка n*ln(n). Это свойство алгоритма выбора полезно использовать в задачах сортировки в сложных структурах данных, когда на одно сравнение выполняется большое число присваиваний. В таких задачах метод выбора успешно конкурирует с самыми быстрыми улучшенными методами сортировки.

Если сравнить рассмотренные прямые методы между собой, то в среднем методы вставки и выбора оказываются приблизительно эквивалентными и в несколько раз (в зависимости от длины массива) лучше, чем метод обмена («пузырька»).