Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2011, 15:20   #1
adidas
 
Регистрация: 29.05.2009
Сообщений: 3
По умолчанию Сортировка Шелла

Нашел задачу на форуме, в которой сортируются столбцы по значениям последней строки, методом сортировки Шелла и у меня не получается ее переделать, что бы сортировались строки по возрастанию значений последнего столбца.

Код:
Program a334;
type
  ta=array[1..1000,1..1000] of integer;
var
  a:ta;
  i,j:integer;
  n,m:integer;

procedure shell(var a:ta); { sortirovka shella }
var c,z,incr,k:integer;
begin
for  k:=1 to n do begin
incr:= m div 2;
while  incr>0 do
  begin
    for  z:=incr+1 to m do
      begin

	      i:= z-incr;
	      while  i>0 do
	        if a[i,k]>a[i+incr,k] then
            begin
	  	        c:=a[i,k];
              a[i,k]:=a[i+incr,k];
              a[i+incr,k]:=c;
			        j:=i-incr;
	          end
	                            else
            i:=0;   { ostonovka proverki }
      end;
        incr:= incr div 2
   end; end;
  end; { konec sortirovki shella }
procedure shell2(var a:ta); { sortirovka shella }
var c,z,incr,k:integer;
begin
incr:= m div 2;
while  incr>0 do
  begin
    for  z:=incr+1 to n do
      begin

	      i:= z-incr;
	      while  i>0 do
	        if a[m,i]>a[m,i+incr] then
            begin
            for k:=1 to  m  do
            begin
	  	        c:=a[k,i];
              a[k,i]:=a[k,i+incr];
              a[k,i+incr]:=c;
			        j:=i-incr;
            end;
	          end
	                            else
            i:=0;   { ostonovka proverki }
      end;
        incr:= incr div 2
   end;
  end; { konec sortirovki shella }

begin
  write('Vvedite kolichestvo strok: ');
  readln(m);
  write('Vvedite kolichestvo stolbcov: ');
  readln(n);
  for i:=1 to m do
  for j:=1 to n do
    begin
      write('Vvedite ',i,j,' element matreci A: ');
      readln(a[i,j]);
    end;
writeln('matrica A');
 for i:=1 to m do
   begin
    for j:=1 to n do
     write (a[i,j],' ');
    writeln;
   end;
   
shell(a);

writeln('matrica B');
 for i:=1 to m do
   begin
    for j:=1 to n do
     write (a[i,j],' ');
    writeln;
   end;
   
shell2(a);

writeln('matrica C');
 for i:=1 to m do
   begin
    for j:=1 to n do
     write (a[i,j],' ');
    writeln;
   end;


readln;
end.
adidas вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка Шелла и Шейкер-сортировка AleksandrMakarov Паскаль, Turbo Pascal, PascalABC.NET 11 11.03.2012 12:18
Сортировка Шелла QuadroX Фриланс 1 29.05.2010 03:52
Сортировка методом Шелла Nostalgia Помощь студентам 0 12.04.2010 14:13
сортировка Шелла pilot76 Помощь студентам 2 17.08.2009 18:05