Дополнить процедуру сортировки подсчётом количества сравнений С - Pascal ABC
Формулировка задачи:
Вещественный массив состоит из значений диапазона от -5 до 5. Направление сортировки: по убыванию. (Сортировка методом «пузырька».)
Помогите, пожалуйста,
дополнить процедуру сортировки подсчётом количества сравнений С и обменов Ob. Вывести эти значения на экран в данной процедуре.
Дополнить функцию сортировки подсчётом количества сравнений С и обменов Ob. Вывести эти значения на экран в данной функции.
Решение задачи: «Дополнить процедуру сортировки подсчётом количества сравнений С»
textual
Листинг программы
procedure SortP (var a:massiv; n:integer); var i,k,C,Ob: integer;b: real; begin C:=0; Ob:=0; for k:=n-1 downto 2 do for i:=1 to k do begin inc(C); if a[i]<a[i+1] then begin inc(Ob); b:=a[i]; a[i]:=a[i+1]; a[i+1]:=b; end; end; writeln('Количество сравнений=',C); writeln('Количество обменов=',Ob; end;
Объяснение кода листинга программы
- В процедуре
SortP
объявлены переменныеa
,n
,i
,k
,C
,Ob
иb
. - Переменная
C
инициализируется значением 0, а переменнаяOb
инициализируется значением 0. - Затем происходит цикл
for
, который выполняется для каждого элементаk
в массивеa
, начиная с индексаn-1
и до индекса 2. - Внутри цикла выполняется еще один цикл
for
, который проходит по каждому элементуi
от 1 доk
. - В начале внутреннего цикла увеличивается значение переменной
C
на 1. - Затем проверяется условие
if a[i]<a[i+1]
. Если это условие истинно, то увеличивается значение переменнойOb
на 1. - После этого присваивается значение
b
элементуa[i]
. - Значение
a[i]
заменяется на значениеa[i+1]
. - Значение
a[i+1]
становится значениемb
. - После окончания внутреннего цикла, значение переменной
C
выводится на экран вместе с значением переменнойOb
. - Конец процедуры.