Сортировка методом пузырька
Добавлено: 20 фев 2007, 15:26
Помогите пожалуйста. Кто знает как сделать так, чтобы метод пузырька не выполнял лишних итераций. Мне сказали, что не хватает флажка реализующего это. Может неправильный алгоритм?
program massiv;
uses crt;
const
n=5;
m=6;
Type
matrix=Array [1..n,1..m] of real;
matrsums=array[1..n]of real;
var
A:matrix;
sums:matrsums;
l,k,i,j:integer;
s:integer;
c,s2:real;
key:char;
begin
repeat
clrscr;
randomize;
writeln('Массив A');
for i:=1 to n do begin writeln;
for j:=1 to m do begin;
A[i,j]:=random(100);
write(' ',a[i,j]:3:2);
end;
end;
for k:=1 to n do begin
sums[k]:=0;
For j:=1 to m do sums[k]:=sums[k]+a[k,j];
writeln;
writeln('Сумма элементов ' ,k, ' строки',' ',sums[k]:6:3);
end;
for i:=1 to n do
for j:=1 to n-i do
if(sums[j]>sums[j+1])then
begin
c:=sums[j];
sums[j]:=sums[j+1];
sums[j+1]:=c;
for k:=1 to m do
begin
c:=a[j,k];
a[j,k]:=a[j+1,k];
a[j+1,k]:=c;
end;
end;
writeln ('Отсортированный массив А');
writeln;
for i:=1 to n do
begin
for j:=1 to m do write(a[i,j]:8:2);
writeln;
end;
Writeln('Начать заново?');
Writeln('Нажмите Esc для выхода или любую другую клавишу для продолжения');
key := readkey;
Until key = #27
End.
program massiv;
uses crt;
const
n=5;
m=6;
Type
matrix=Array [1..n,1..m] of real;
matrsums=array[1..n]of real;
var
A:matrix;
sums:matrsums;
l,k,i,j:integer;
s:integer;
c,s2:real;
key:char;
begin
repeat
clrscr;
randomize;
writeln('Массив A');
for i:=1 to n do begin writeln;
for j:=1 to m do begin;
A[i,j]:=random(100);
write(' ',a[i,j]:3:2);
end;
end;
for k:=1 to n do begin
sums[k]:=0;
For j:=1 to m do sums[k]:=sums[k]+a[k,j];
writeln;
writeln('Сумма элементов ' ,k, ' строки',' ',sums[k]:6:3);
end;
for i:=1 to n do
for j:=1 to n-i do
if(sums[j]>sums[j+1])then
begin
c:=sums[j];
sums[j]:=sums[j+1];
sums[j+1]:=c;
for k:=1 to m do
begin
c:=a[j,k];
a[j,k]:=a[j+1,k];
a[j+1,k]:=c;
end;
end;
writeln ('Отсортированный массив А');
writeln;
for i:=1 to n do
begin
for j:=1 to m do write(a[i,j]:8:2);
writeln;
end;
Writeln('Начать заново?');
Writeln('Нажмите Esc для выхода или любую другую клавишу для продолжения');
key := readkey;
Until key = #27
End.