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

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ,

МОЛОДЕЖИ И СПОРТА УКРАИНЫ

Национальный аэрокосмический университет им. Н.Е. Жуковского

«Харьковский авиационный институт»

Кафедра информационных технологий проектирования

Пояснительная записка к домашнему заданию по курсу

“Теория Алгоритмов”

Выполнила студентка 116 гр.

Воробьёва М.В.

Проверил к.т.н., доц. каф. 105

Бабак И.Н.

Харьков - 2013

СОДЕРЖАНИЕ

ВВЕДЕНИЕ 3

1 ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 4

1.1. Определение понятия сортировки и ее классификация 4

1.2. Описание сортировки простым обменом 4

2 ОПИСАНИЕ БЛОК-СХЕМЫ АЛГОРИТМА 7

3 ПРАКТИЧЕСКАЯ ЧАСТЬ 8

ВЫВОД 11

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 12

Введение

Задача исследования, рассмотренная в данной пояснительной записке к домашнему заданию по курсу “Теория Алгоритмов”, состоит в том, чтобы проанализировать эффективность сортировки с прямым обменом (пузырьковая сортировка).

Анализ эффективности сортировки включает в себя: подсчет количества сравнений и пересылок элементов; сравнительный анализ полученных значений на трех разных по мощности массивах (состоящих из 10, 20 и 100 элементов); сравнительный анализ полученных значений на случайно сгенерированного массива, обратно упорядоченного и для уже отсортированного.

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

      1. Определение понятия сортировки и ее классификация

Сортировка – это процесс перестановки объектов множества в определенном порядке. Цель сортировки – облегчить последующий поиск элементов в отсортированном множестве. Методы сортировки очень важны, особенно при обработке данных. Сортировка является идеальным примером огромного разнообразия алгоритмов, выполняющих одну и ту же задачу многие из которых являются оптимальными, а большинство имеет какие-либо преимущества по сравнению с остальными.

Методы сортировки обычно разделяют на две категории: сортировка массивов и сортировки (последовательных) файлов. Эти два типа часто называют внутренней и внешней сортировкой, так как массивы располагаются во «внутренней» (оперативной) памяти ЭВМ, а файлы хранятся в более медленной и вместительной «внешней» памяти.

Основное требование к методам сортировки массивов – экономное использование памяти, т.е. переупорядочивание элементов нужно выполнять in situ (на том же месте). Методы сортирующие элементы in situ, можно разбить на три основных класса в зависимости от лежащего в их основе приема:

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

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

  3. Сортировка обменом. [1]

      1. Описание сортировки простым обменом

В рамках сортировки простым обменом или пузырьковой сортировки (bubble sort) выполняются следующие действия: проход по файлу с обменом местами со­седних элементов, нарушающих заданный порядок, до тех пор, пока файл не будет окончательно отсортирован. Основное достоинство пузырьковой сортировки заключается в том, что его легко реализовать в виде программы.

В ходе сортировки берутся на рассмотрение элементы справа налево. Если минимальный элемент обнаружен на первом проходе, он меняется местами с каждым элементом, стоящим от него слева, и, в конце концов, этот элемент помещается в позицию на левой границе массива. Затем на втором проходе в соответствующую позицию устанавливается второй по величине элемент и т.д. Таким образом, вполне достаточно выполнить N проходов, т.е., пузырьковую сортировку можно рассматривать как один из видов сортировки выбором, хотя при этом для помещения каждого элемента в соответствующую позицию приходится выполнять больший объем действий. [2]

Процедура PuzSort представляет собой реализацию алгоритма пузырьковой сортировки:

Procedure PuzSort(Var A: mas);

var

buf : integer;

i,j : byte;

Begin

For i:=2 to n do

For j:=n downto i do

if A[j-1]>A[j] then

Begin

buf:=A[j-1];

A[j-1]:=A[j];

A[j]:=buf;

End;

End;

где mas – это тип переменой, представляющий собой массив элементов типа

integer с индексацией начиная с 1;

n – количество элементов массива;

buf – переменная типа integer, используемая как буфер обмена.

Пример работы этого алгоритма на массиве с числами «4 2 6 3 5 1» сортировки по возрастанию приведен ниже (выделены те элементы, которые сравниваются на данном этапе).

Первый проход:

(4 2 6 3 5 1) (4 2 6 3 1 5), меняет местами, так как 5 > 1;

(4 2 6 3 1 5) (4 2 6 1 3 5), меняет местами, так как 3 > 1;

(4 2 6 1 3 5) (4 2 1 6 3 5), меняет местами, так как 6 > 1;

(4 2 1 6 3 5) (4 1 2 6 3 5), меняет местами, так как 2 > 1;

(4 1 2 6 3 5) (1 4 2 6 3 5), меняет местами, так как 4 > 1.

Второй проход:

(1 4 2 6 3 5) (1 4 2 6 3 5), не меняет местами, так как 3 < 5;

(1 4 2 6 3 5) (1 4 2 3 6 5), меняет местами, так как 6 > 3;

(1 4 2 3 6 5) (1 4 2 3 6 5), не меняет местами, так как 2 < 3;

(1 4 2 3 6 5) (1 2 4 3 6 5), меняет местами, так как 4 > 2.

Третий проход:

(1 2 4 3 6 5) (1 2 4 3 5 6), меняет местами, так как 6 > 5;

(1 2 4 3 5 6) (1 2 4 3 5 6), не меняет местами, так как 3 < 5;

(1 2 4 3 5 6) (1 2 3 4 5 6), меняет местами, так как 4 > 3.

Четвертый проход:

(1 2 3 4 5 6) (1 2 3 4 5 6), не меняет местами, так как 5 < 6;

(1 2 3 4 5 6) (1 2 3 4 5 6), не меняет местами, так как 4 < 5.

Пятый проход:

(1 2 3 4 5 6) (1 2 3 4 5 6), не меняет местами, так как 5 < 6.

Данный массив отсортирован.

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