Отсортировать в матрице столбцы по убыванию значений элементов в первой строке
Отсортировать в матрице столбцы по убыванию значений элементов в первой строке.
Данную задачу можно понять так:
- отсортировать необходимо первую строку матрицы;
- остальные элементы каждого столбца должны переместиться в тот же столбец, куда переместился их первый (верхний) элемент, т.е. следовать за ним.
См. сортировка выбором. Можно использовать метод пузырька.
Отличие данной задачи в том, что цикл сортировки включает перестановку всех элементов очередного столбца матрицы.
const
n = 4; m = 6;
var
arr: array[1..n,1..m] of integer;
i,j,k,id: byte;
min: integer;
begin
randomize;
for i:=1 to n do begin
for j:=1 to m do begin
arr[i,j] := random(50) - 25;
write(arr[i,j]:4);
end;
writeln;
end;
k := m;
j := 1;
while k > 1 do begin
min := arr[1,1];
id := 1;
for j:=2 to k do
if arr[1,j] < min then begin
min := arr[1,j];
id := j;
end;
arr[1,id] := arr[1,j];
arr[1,j] := min;
for i:=2 to n do begin
min := arr[i,id];
arr[i,id] := arr[i,j];
arr[i,j] := min;
end;
k := k - 1;
end;
writeln;
for i:=1 to n do begin
for j:=1 to m do
write(arr[i,j]:4);
writeln;
end;
end.