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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2017, 23:13   #1
Panchess
 
Регистрация: 15.03.2017
Сообщений: 5
По умолчанию Использование быстрой сортировки (по методу Хоара) - Pascal ABC

В данном двумерном массиве упорядочить по возрастанию элементы, расположенные между первым и последним отрицательными элементами.
Panchess вне форума Ответить с цитированием
Старый 20.03.2017, 18:36   #2
Panchess
 
Регистрация: 15.03.2017
Сообщений: 5
По умолчанию

Необходимо изменить под быструю сортировку(Хоара).
Код:
const nmax=10;
procedure Swap(var a,b:integer);
var tmp:integer;
begin
tmp:=a;
a:=b;
b:=tmp;
end;
var a:array[1..nmax,1..nmax] of integer;
    m,n,i,j,k,i1,j1,ip,jp,o1,op:byte;
    x:integer;
begin
repeat
randomize;
write('Количество строк до ',nmax,' m=');
readln(m);
until m in [1..nmax];
repeat
write('Количество столбцов до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Исходная матрица:');
o1:=0;
op:=0;
k:=0;
for i:=1 to m do
 begin
  for j:=1 to n do
   begin
    a[i,j]:=-10+random(21);
    write(a[i,j]:4);
    inc(k);
    if a[i,j]<0 then
    if o1=0 then
     begin
      i1:=i;
      j1:=j;
      o1:=k;
     end
    else
     begin
      ip:=i;
      jp:=j;
      op:=k;
     end;
   end;
  writeln;
 end;
if o1=0 then write('Нет отрицательных элементов')
else
 begin
  writeln('Первый отрицательный элемент a[',i1,',',j1,']=',a[i1,j1],' его номер по порядку=',o1);
  if op=0 then writeln('Второго отрицательного элемента нет')
  else
   begin
    writeln('Последний отрицательный элемент a[',ip,',',jp,']=',a[ip,jp],' его номер по порядку=',op);
    if op-o1=1 then writeln('Между первым и последним отрицательными нет других элементов')
    else
     begin
      for i:=o1+1 to op-o1-1 do
      for j:=i+1 to op-o1 do
      if a[(i-1)div n+1,(i-1)mod n+1]>a[(j-1)div n+1,(j-1)mod n+1]
      then Swap(a[(i-1)div n+1,(i-1)mod n+1],a[(j-1)div n+1,(j-1)mod n+1]);
      writeln('Отсортированная матрица:');
      for i:=1 to m do
       begin
        for j:=1 to n do
        write(a[i,j]:4);
        writeln;
       end;
     end;
   end;
 end;
end.
Panchess вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пример быстрой сортировки массива строк и сортировки методом выбора Вероника99 Помощь студентам 1 12.12.2016 19:23
Алгоритмы сортировки пирамидальный(кучей) и быстрой сортировки (с++) mmd12 Помощь студентам 4 17.05.2012 14:14
Сортировка двумерного массива по столбцам методом быстрой сортировки( Хоара) и пирамидальной. tworc22 Помощь студентам 3 28.10.2011 23:05
Метод быстрой сортировки Хоора Pascal Бармалей Помощь студентам 8 18.11.2009 21:21
сортировка массива Методом Хоара (быстрой сортировкой) wild-weight Паскаль, Turbo Pascal, PascalABC.NET 3 26.09.2009 16:46