Как называется описанный метод сортировки по возрастанию? Проходя по массиву, ищем два соседних элемента, которые расположены не по возрастанию. Найдя такие элементы, меняем их местами. Продолжаем до тех пор, пока за весь проход по массиву не будет сделано ни одной перестановки.
Выберите один из 4 вариантов ответа:
1) Метод перебора
2) Метод пузырька
3) Метод выбора
4) Метод последовательных перестановок
var месяц;
switch (n) {
case 1: месяц = "январь"; break;
case 2: месяц = "февраль"; break;
case 3: месяц = "март"; break;
case 4: месяц = "апрель"; break;
case 5: месяц = "май"; break;
case 6: месяц = "июнь"; break;
case 7: месяц = "июль"; break;
case 8: месяц = "август"; break;
case 9: месяц = "сентябрь"; break;
case 10: месяц = "октябрь"; break;
case 11: месяц = "ноябрь"; break;
case 12: месяц = "декабрь"; break;
default: месяц = ""; break;
}
return месяц;
}
// Внимание! Если программа не работает, обновите версию!
begin
var (n,m):=ReadInteger2('Количество строк и столбцов в матрице:');
Writeln('*** Исходная матрица ***');
var a:=MatrRandom(n,m,-99,99);
a.Println(4); Writeln(4*a.ColCount*'-');
var (q,k):=ReadInteger2('Укажите номера строк q и k:');
Assert((k<>q) and k.Between(1,n) and q.Between(1,n),'Неверная пара (q,k)');
k-=1; q-=1; // перешли к индексам
var rk:=a.Row(k);
if k<q then begin
for var r:=k+1 to q do a.SetRow(r-1,a.Row(r));
a.SetRow(q,rk)
end
else begin
for var r:=k-1 downto q+1 do a.SetRow(r+1,a.Row(r));
a.SetRow(q+1,rk)
end;
Writeln('*** Результат ***'); a.Println(4)
end.
Примеры
Количество строк и столбцов в матрице: 5 8
*** Исходная матрица ***
32 -6 -66 81 84 0 50 -83
93 5 90 -33 88 30 -5 85
-46 35 -22 74 -66 8 -3 -86
-23 -81 -82 30 -1 -71 28 19
0 -95 -30 -46 -24 -77 38 49
--------------------------------
Укажите номера строк q и k: 4 1
*** Результат ***
93 5 90 -33 88 30 -5 85
-46 35 -22 74 -66 8 -3 -86
-23 -81 -82 30 -1 -71 28 19
32 -6 -66 81 84 0 50 -83
0 -95 -30 -46 -24 -77 38 49
Количество строк и столбцов в матрице: 4 3
*** Исходная матрица ***
-68 53 -35
-83 78 -78
99 -4 -9
-86 11 -30
------------
Укажите номера строк q и k: 2 4
*** Результат ***
-68 53 -35
-83 78 -78
-86 11 -30
99 -4 -9