сортировке входное и исходное множества находятся в одной последовательности, причем исходная - в начальной ее части. В исходном состоянии можно считать, что первый элемент последовательности уже принадлежит упорядоченному исходному множеству, другая часть последовательности - неупорядоченная входная. Первый элемент входного множества примыкает к концу исходного множества. На каждом шаге сортировки происходит перераспределение последовательности: исходное множество увеличивается на один элемент, а входное - уменьшается. Это происходит по счет того, что первый элемент входного множества теперь считается последним элементом исходного. Потом выполняется просмотр исходного множества от конца до начала с перестановкой соседних элементов, которые не отвечают критерию упорядоченности. Просмотр прекращается, когда прекращаются перестановки. Это приводит к тому, что последний элемент исходного множества "вытекает" на свое место в множестве. Поскольку при этом перестановка приводит к сдвигу нового в исходном множестве элемента на одну позицию влево, нет смысла каждый раз делать полный обмен между соседними элементами -довольно сдвигать старый элемент вправо, а новый элемент записать в исходное множество, когда его место будет установлено. Именно так и построенн программный пример пузырьковой сортировки вставками.
Procedure Sort (var a : Seq);
Var i, j, k, t : integer;
begin for i:=2 to N do { перебір вхідного масиву }
{*** вх.множина - [i..N], вих.множина - [1..i] }
begin t:=a[i]; { запам'ятовується значення нового эл-та }
j:=i-1; {пошук місця для эл. у вих. множинаі зі зрушенням}
{кінець циклу при досягненні початку або, якщо знайдено эл.менший
нового} while (j>=1) and (a[j]>t) do
begin a[j+1]:=a[j]; { всі эл-ты, більші нового зрушуються }
j:=j-1; { цикл від кінця до початку вихідної множинаі }
end; a[j+1]:=t; { новий эл-т ставиться на своє місце }
end; end;
Хотя обменные алгоритмы стратегии включения и позволяют сократить число сравнений при наличии некоторой исходной упорядоченности входного множества, значительное число пересылок существенным образом снижает эффективность этих алгоритмов. Поэтому алгоритмы включения целесообразно применять к связным структурам данных, когда операция перестановки элементов структуры требует не пересылки данных в памяти, а выполняется способом коррекции указателей.
4.Выбор метода решения .
Представленная программа работает с массивом, хранящим данные в виде одномерной матрицы, что соответствует принципам функционирования модели плоских файлов.
Целью разработки является программа, которая оценивала бы временные характеристики сортировки одного и того же массива данных с помощью различных алгоритмов сортировки, реализованных на языке низкого уровня.
Для реализации проекта выбран следующий метод: реализованные на языке низкого уровня (Assembler) алгоритмы сортировки находятся в отдельных модулях и подключаются в основной программе. При этом замеряется время начала выполнения сортировки каждым методом и окончание его. Разность между этими двумя значениями и есть оценка скорости выполнения алгоритма. После проводится визуальное сравнение полученных результатов. Реализовано 3 вида сортировок: на случайном массиве данных, на прямо упорядоченном и на обратно упорядоченном.
Для нормального функционирования программы не нужны какие либо
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.