Работа 3.6 Упр.26 ГДЗ Семакин 10 класс (Информатика)
Примечание. Дополнительный массив не использовать.
Чтобы получить одну неубывающую последовательность из двух неубывающих последовательностей, удобно последовательно вставлять элементы массива b в массив a на нужное место. Дополнительный массив не нужен: элементы a сдвигаются вправо, освобождая позицию для вставки.
Алгоритм такой:
- сначала вводим массив a и массив b;
- для каждого элемента b[i] ищем место вставки в a;
- если b[i] >= a[n], то просто дописываем его в конец;
- иначе находим первый элемент a[j], который не меньше b[i], сдвигаем элементы вправо и вставляем b[i] на место a[j];
- в конце выводим получившуюся последовательность.
var
a, b: array[1..2*nmax] of integer;
n, m, i, j, k: integer;
begin
repeat
write(‘Размер массива A до ‘, nmax, ‘ n=’);
readln(n);
until n in [1..nmax];for i := 1 to n do
begin
a[i] := 3 * i;
write(a[i], ‘ ‘);
end;
writeln;
writeln;repeat
write(‘Размер массива B до ‘, nmax, ‘ m=’);
readln(m);
until m in [1..nmax];for i := 1 to m do
begin
b[i] := 2 * i;
write(b[i], ‘ ‘);
end;
writeln;
writeln;for i := 1 to m do
if b[i] >= a[n] then
begin
n := n + 1;
a[n] := b[i];
end
else
begin
for j := 1 to n do
if a[j] >= b[i] then
begin
n := n + 1;
for k := n downto j + 1 do
a[k] := a[k — 1];
a[j] := b[i];
break;
end;
end;writeln(‘Результат:’);
for i := 1 to n do
write(a[i], ‘ ‘);
readln;
end.
Так как элементы обоих массивов вставляются в правильном порядке, итоговая последовательность остаётся неубывающей.
Ответ
Новая последовательность получается последовательной вставкой элементов массива b в массив a без использования дополнительного массива.