Отсортировать в матрице столбцы по убыванию значений элементов в первой строке | Язык Паскаль

Отсортировать в матрице столбцы по убыванию значений элементов в первой строке

Отсортировать в матрице столбцы по убыванию значений элементов в первой строке.

Данную задачу можно понять так:

  1. отсортировать необходимо первую строку матрицы;
  2. остальные элементы каждого столбца должны переместиться в тот же столбец, куда переместился их первый (верхний) элемент, т.е. следовать за ним.

См. сортировка выбором. Можно использовать метод пузырька.

Отличие данной задачи в том, что цикл сортировки включает перестановку всех элементов очередного столбца матрицы.

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.