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

Описание подпрограммы:

В начале присваивается начальное значение флажку I, равное 2, т.к. в процессе выполнения сортировки мы будем сравнивать предыдущий элемент массива с текущим. ПереключателюFприсваивается значение «Истина», чтобы выполнилось условие входа в цикл А1. В цикле А1 переключателюFприсваивается значение «Ложь», и это значит, что пока перестановок элементов не произошло. ПеременнойJприсваивается номер последнего элемента массива. В цикле А2 происходит сравнение двух соседних элементов и их перестановка, в случае если правый элемент меньше левого. Если произошла хоть одна перестановка, то переключателюFприсваивается «Истина», а это значит, что цикл А1 выполниться как минимум еще один раз.

«Прямое включение»

Описание циклов:

Цикл А1: Сложный, внешний, с предусловием, с неизвестным числом повторений;

Цикл A2: Простой, вложенный, с предусловием, с известным числом повторений;

Описание констант:

Раздел описания констант:

M– константа, задающаяся непосредственно в самой программе и определяющая размерность массива.

Описание переменных:

Раздел описания переменных:

I– граница отсортированных элементов;

J– номер сравниваемого элемента массива;

А – массив сортируемых элементов;

Остальные, не объявленные в подпрограмме переменные:

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

Sr2 – количество сравнений;

Pr2 – количество перестановок;

Rk– сохраненное значение элемента массива при перестановке его с другим элементом.

Типы констант и переменных(объявленных в подпрограмме):

M:Integer– целочисленный тип, т.к. М в подпрограмме может имеет значения 2000, 100 или 10.

I,J:Integer– номера элементов массива всегда целые.

A:TM– (о типе ТМ см. в описании программы);

Код подпрограммы:

procedure INCL (const m:integer; var a:tm);

var i,j:integer;

begin

i:=2;

while i<=m do //Цикл А1

begin

j:=i;

f:=True;

while (j>=1) and (f=True) do//Цикл А2 будет выполняться до тех пор, пока не будет перестановок

begin

if a[j-1]>a[j] then//Сравнение элементов массива

begin //Перестановка элементов массива

rk:=a[j];

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

a[j-1]:=rk;

pr2:=pr2+1;

end

else f:=False; //Если не было перестановки, тоFприсваивается «Ложь»

sr2:=sr2+1;

j:=j-1;

end;

i:=i+1;

end;

end;

Описание подпрограммы:

В начале присваивается начальное значение флажку I, равное 2, т.к. в процессе выполнения сортировки мы будем сравнивать предыдущий элемент массива с текущим. В цикле А1 переменнойJприсваивается номерI, т.к. это граница отсортированной части; переключателюFприсваивается значение «Истина», чтобы выполнилось условие входа в цикл А2. В цикле А2 происходит сравнение двух соседних элементов и их перестановка, в случае если правый элемент меньше левого. Если перестановки не произошло, то переключателюFприсваивается значение «Ложь». Это значит, что до элементаIвсе элементы отсортированы по порядку. Сортировка будет выполняться до тех пор пока не проверится последний элемент массива, т.е.I>n.