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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2009, 23:13   #1
tworc22
Новичок
Джуниор
 
Регистрация: 10.06.2009
Сообщений: 1
По умолчанию Сортировка двумерного массива по столбцам методом быстрой сортировки( Хоара) и пирамидальной.

Здравствуйте. Помогите пожалуйста. Используя два типа сортировки:быстрая сортировка(Хоара) и пирамидальная, отсортировать элементы массива A по стольцам начиная с элемента a[k,l] и заканчивая элементом a[c,d], k<=c (l<=). Остальные элементы массива не сортировать.

Кто нибудь Помогите, или ссылки напишите...
tworc22 вне форума Ответить с цитированием
Старый 11.06.2009, 08:37   #2
BaronTreep
Форумчанин
 
Регистрация: 29.05.2009
Сообщений: 320
По умолчанию

Вот пример быстрой сортировки одномерного массива

Код:
 var
  i, j, n : integer;
  stackl, stackr : array [1 .. MAX_PLAGIN] of integer;
  l, r, sp, middle: integer;
begin
  n := 0;
  OKs := True;
  if CountPI <= 0 then exit;

  sp := 1; stackl[1] := 1; stackr[1] := CountPI;
  while sp > 0 do begin
        l := stackl[sp];
        r := stackr[sp];
        dec(sp);
        while l < r do begin
            i := l; j := r;
            middle := PlagInS[(l + r) div 2].Left;
            while i < j do begin
                while PlagInS[i].Left < middle do inc(i);
                while middle < PlagInS[j].Left do dec(j);
                if i <= j then begin
                   temp := PlagInS[i];
                   PlagInS[i] := PlagInS[j];
                   PlagInS[j] := temp;
                   inc(i); dec(j);
                end;
            end;
            if i < r then begin
                inc(sp);
                stackl[sp] := i;
                stackr[sp] := r;
            end;
            r := j;
        end;
  end;
Для двумерного нужно немного подкоректировать.
BaronTreep вне форума Ответить с цитированием
Старый 28.10.2011, 21:40   #3
progaagent
 
Регистрация: 28.10.2011
Сообщений: 3
По умолчанию в чем ошибка сортировки двумерного массива?

var
mass:array[0..4,0..4]of integer;
i,j,x,y,b,k,q,z,o,p:integer;
buf:boolean;
begin
{ввод матрицы}
//randomize;
for i := 0 to length(mass) - 1 do
for j := 0 to length(mass) - 1 do
mass[i,j]:=random(100);
for i := 0 to length(mass) - 1 do
begin
for j := 0 to length(mass) - 1 do
begin
write(mass[i,j]:4,' ');
end;
writeln;
end;
write(length(mass));
writeln;
{сортировка матрицы}
buf:=false;
for i := 0 to length(mass) - 1 do
begin
for j := 0 to length(mass) - 1 do
begin
b:=mass[i,j];
z:=b;
for x := i to length(mass) - 1 do
begin
for y := j to length(mass) - 1 do
begin
if b > mass[x,y] then
begin
b:=mass[x,y];
k:=x;
q:=y;
buf:=true;
end;
end;
end;
if buf = true then
begin
mass[i,j]:=b;
mass[k,q]:=z;
buf:=false;
end;
end;
end;

{вывод матрицы}
for i := 0 to length(mass) - 1 do
begin
for j := 0 to length(mass) - 1 do
begin
write(mass[i,j]:4,' ');
end;
writeln;
end;
readln;
readln;
end.
progaagent вне форума Ответить с цитированием
Старый 28.10.2011, 23:05   #4
progaagent
 
Регистрация: 28.10.2011
Сообщений: 3
По умолчанию сортировка двумерного массива (исправленный вариант)

var
mass:array[0..6,0..6]of integer;
i,j,x,y,b,k,q,z,o,p:integer;
buf:boolean;
begin
{ввод матрицы}
randomize;
for i := 0 to length(mass) - 1 do
for j := 0 to length(mass) - 1 do
mass[i,j]:=random(100);
for i := 0 to length(mass) - 1 do
begin
for j := 0 to length(mass) - 1 do
begin
write(mass[i,j]:4,' ');
end;
writeln;
end;
write(length(mass));
writeln;
{сортировка матрицы}
for i := 0 to length(mass) - 1 do
begin
for j := 0 to length(mass) - 1 do
begin
b:=mass[i,j];
for x := 0 to length(mass) - 1 do
begin
for y := 0 to length(mass) - 1 do
begin
if b < mass[x,y] then
begin
z:=b;
b:=mass[x,y];
mass[i,j]:=b;
mass[x,y]:=z;
end;
end;
end;
end;
end;

{вывод матрицы}
for i := 0 to length(mass) - 1 do
begin
for j := 0 to length(mass) - 1 do
begin
write(mass[i,j]:4,' ');
end;
writeln;
end;
readln;
readln;
end.
progaagent вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка двумерного массива Makarov Помощь студентам 8 29.10.2011 11:55
Сортировка двумерного массива Dwaight$ Помощь студентам 1 27.05.2009 03:14
сортировка двумерного массива cornholio Помощь студентам 1 27.11.2007 23:36