Номер §1.4 ПМ 11

ГДЗ по информатике 9 класс, Босова 2023, страница 50

§. ПМ Сортировка выбором с подпрограммами

Запишите полный текст программы и выполните её на компьютере для рассмотренного в примере массива A. Разработайте подпрограммы max и swap для поиска максимального элемента и обмена значениями двух элементов. Модифицируйте программу сортировки выбором, использовав в ней одну или обе из названных подпрограмм. Рассмотренный массив: A = (0, 1, 9, 2, 4, 3, 6, 5).

Решение

Сначала запишем полный вариант программы по фрагменту из параграфа. Массив содержит восемь чисел из примера. Внутренний цикл ищет максимум начиная с очередной позиции i, а переменная x временно хранит её прежнее значение при обмене.

const N = ;
var
  i, j, imax, x: integer;
  A: array[..N] of integer;
begin
  A[] := ; A[] := ; A[] := ; A[] := ;
  A[] := ; A[] := ; A[] := ; A[] := ;
  for i :=  to N -  do
  begin
    imax := i;
    for j := i +  to N do
      if A[j] > A[imax] then imax := j;
    x := A[i];
    A[i] := A[imax];
    A[imax] := x
  end;
  for i :=  to N do write(A[i], ' ')
end.

Теперь вынесем поиск и обмен в подпрограммы. Для каждого i процедура max ищет индекс наибольшего элемента среди A[i], …, A[]. Процедура swap меняет местами два элемента через временную переменную t: без неё первое присваивание уничтожило бы старое значение A[i].

const N = ;
type TArray = array[..N] of integer;
var
  A: TArray;
  i, imax: integer;

procedure max(const B: TArray; first: integer; var pos: integer);
var j: integer;
begin
  pos := first;
  for j := first +  to N do
    if B[j] > B[pos] then pos := j
end;

procedure swap(var a, b: integer);
var t: integer;
begin
  t := a;
  a := b;
  b := t
end;

begin
  A[] := ; A[] := ; A[] := ; A[] := ;
  A[] := ; A[] := ; A[] := ; A[] := ;
  for i :=  to N -  do
  begin
    max(A, i, imax);
    swap(A[i], A[imax])
  end;
  for i :=  to N do write(A[i], ' ')
end.

max начинает с pos = first, поэтому сравнивает новые элементы с уже найденным наибольшим в неотсортированной части. После swap на позиции i стоит её максимум; следующий проход начинается с i + и не затрагивает уже поставленный элемент. Проверим изменения массива по проходам.

Проход i Выбранный максимум Массив после обмена
, , , , , , ,
, , , , , , ,
, , , , , , ,
, , , , , , ,
, , , , , , ,
, , , , , , ,
, , , , , , ,

После седьмого прохода все числа расположены по невозрастанию. Программа выводит ту же последовательность.

Ответ

Для массива (, , , , , , , ) результат сортировки: , , , , , , , .

Помогло?

Нет твоего задания?Сфоткай, и ДЗмэн решит за пару секунд.

Решить по фото