Добавил:
Hist
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программы c++ (сортировка, хэширование) / 1 / Shaker_Sort
.pas {4. Шейкерная сортировка (улучшеная пузырьковая, обменная) по убыванию}
CONST
n=10;
VAR
i: integer;
mass: array [1..n] of real;
Procedure InitMass;
Var
i:integer;
Begin
for i:=1 to n do mass[i]:=10*sin(0.3*i+0.24);
End;
Procedure Sha_So;
Var
l,r,j : integer;
x: real;
Begin
l:=2;
r:=n;
while l<=r do begin
//Пузырек слева направо
for j:=l to r do
if mass[j]<mass[j-1] then begin
x:=mass[j];
mass[j]:=mass[j-1];
mass[j-1]:=x;
end;
r:=r-1;
//Пузырек справа налево
for j:=r downto l do
if mass[j]<mass[j-1] then begin
x:=mass[j];
mass[j]:=mass[j-1];
mass[j-1]:=x;
end;
l:=l+1;
end;
End;
BEGIN
InitMass;
for i:=1 to n do writeln(mass[i]:5:5);
WriteLn('***********************************************************');
Sha_So;
for i:=1 to n do writeln(mass[i]:5:5);
END.
CONST
n=10;
VAR
i: integer;
mass: array [1..n] of real;
Procedure InitMass;
Var
i:integer;
Begin
for i:=1 to n do mass[i]:=10*sin(0.3*i+0.24);
End;
Procedure Sha_So;
Var
l,r,j : integer;
x: real;
Begin
l:=2;
r:=n;
while l<=r do begin
//Пузырек слева направо
for j:=l to r do
if mass[j]<mass[j-1] then begin
x:=mass[j];
mass[j]:=mass[j-1];
mass[j-1]:=x;
end;
r:=r-1;
//Пузырек справа налево
for j:=r downto l do
if mass[j]<mass[j-1] then begin
x:=mass[j];
mass[j]:=mass[j-1];
mass[j-1]:=x;
end;
l:=l+1;
end;
End;
BEGIN
InitMass;
for i:=1 to n do writeln(mass[i]:5:5);
WriteLn('***********************************************************');
Sha_So;
for i:=1 to n do writeln(mass[i]:5:5);
END.
Соседние файлы в папке 1