- •Министерство образования Республики Беларусь
- •Постановка задачи
- •Описание циклов:
- •Описание констант:
- •Описание типов:
- •Описание переменных:
- •Типы констант и переменных:
- •Код программы:
- •Описание программы:
- •«Улучшенный пузырек»
- •Описание подпрограммы:
- •«Прямое включение»
- •Описание подпрограммы:
- •Результат:
Описание подпрограммы:
В начале присваивается начальное значение флажку 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.