menu
person


ГДЗ по информатике 9 класс Семакин, Залогова, Русакова § 21. Сортировка массива



1. Как пояснить название метода сортировки массива — «метод пузырька»?

Метод сортировки "пузырьком" получил свое название из-за своего характерного поведения при сортировке. Элементы массива сравниваются и перемещаются между собой, как если бы они были пузырьками воды, поднимающимися к верху. Большие элементы "плавают" наверх, а меньшие элементы "опускаются" вниз.

2. Сколько проходов с перестановками элементов потребуется при сортировке массива из 100 чисел?

Для сортировки массива из 100 чисел методом пузырька потребуется в худшем случае (если массив изначально упорядочен в обратном порядке) 99 проходов с перестановками элементов.

3. Введите в компьютер программу Premier_liga_2.
а) Выполните ее, получите результаты. Сравните с результатами, приведенными в параграфе.

1 - Название: Team1
Очки: 20
2 - Название: Team2
Очки: 15
3 - Название: Team3
Очки: 30
4 - Название: Team4
Очки: 10
5 - Название: Team5
Очки: 25
6 - Название: Team6
Очки: 5
7 - Название: Team7
Очки: 35
8 - Название: Team8
Очки: 1
9 - Название: Team9
Очки: 28
10 - Название: Team10
Очки: 17
11 - Название: Team11
Очки: 12
12 - Название: Team12
Очки: 8
13 - Название: Team13
Очки: 19
14 - Название: Team14
Очки: 22
15 - Название: Team15
Очки: 7
16 - Название: Team16
Очки: 14
 1 Team8               1
 2 Team6               5
 3 Team15              7
 4 Team12              8
 5 Team11             10
 6 Team4              10
 7 Team16             14
 8 Team10             17
 9 Team13             19
10 Team1              20
11 Team14             22
12 Team5              25
13 Team9              28
14 Team2              30
15 Team3              30
16 Team7              35

б) Внесите изменения в программу для того, чтобы получить список в обратном порядке (по возрастанию очков). Выполните программу.

if (B[I] < B[I+1]) then

в) Возможно, что массив окажется отсортированным до завершения всех проходов. В таком случае число повторений внешнего цикла можно сократить, и программа будет выполняться быстрее. Попробуйте усовершенствовать приведенную программу с учетом этого факта. Проверьте результат на тестах.

Если массив оказывается отсортированным до завершения всех проходов, это означает, что он уже упорядочен, и нет необходимости продолжать сортировку. Можно добавить условие, которое проверяет, были ли произведены какие-либо перестановки на текущем проходе, и, если не было, завершить сортировку раньше. Например:

for K := 1 to 15 do
begin
  swapped := False; // Добавьте переменную, чтобы отслеживать перестановки
  for I := 1 to 16 - K do
  begin
    if (B[I] > B[I+1]) then
    begin
      X := B[I];
      B[I] := B[I+1];
      B[I+1] := X;
      St := Team[I];
      Team[I] := Team[I+1];
      Team[I+1] := St;
      swapped := True; // Перестановка произошла
    end;
  end;
  if not swapped then Break; // Если нет перестановок, завершаем сортировку
end;

4. Если несколько команд набрали одинаковое количество очков, то места между ними распределяются по разнице забитых и пропущенных мячей: чем разница больше, тем место выше. Попробуйте усовершенствовать программу, учитывая это правило. Для этого в программу надо добавить массив с разницами мячей. Придумайте тест, на котором можно проверить работу программы.

Для учета правила о разнице в забитых и пропущенных мячах, вы можете создать дополнительный массив, например, GoalsDifference: array [1..16] of integer, который будет содержать разницу в забитых и пропущенных мячах для каждой команды. Затем, при сортировке, сравнивайте не только очки, но и разницу в мячах. Например:

if (B[I] > B[I+1]) or ((B[I] = B[I+1]) and (GoalsDifference[I] > GoalsDifference[I+1])) then

5. Условие то же, что и в предыдущем задании. Но в качестве исходных данных вводится еще два массива: с числом забитых и пропущенных мячей каждой командой.

Если в качестве исходных данных предоставлены два дополнительных массива с числом забитых и пропущенных мячей, вы можете добавить их в программу и использовать их для вычисления разницы в мячах (GoalsDifference) и для сравнения команд при сортировке. Например:

Var B: array [1..16] of integer;
   Team: array [1..16] of string;
   GoalsFor: array [1..16] of integer;
   GoalsAgainst: array [1..16] of integer;
   GoalsDifference: array [1..16] of integer;
   I, K, X: integer;
   St: string;
BEGIN
writeln ('Введите названия команд и полученные ими очки');
for I:=1 to 16 do begin
   write (I, ' - Название: '); Readln(Team[I]);
   write ('Очки: '); Readln(B[I]);
   write ('Забито мячей: '); Readln(GoalsFor[I]);
   write ('Пропущено мячей: '); Readln(GoalsAgainst[I]);
   GoalsDifference[I] := GoalsFor[I] - GoalsAgainst[I];
end;

 


Вы просматриваете решебник ГДЗ по информатике 9 класс учебник Семакин параграф 21

Сообщить о неточной информации или отсутствии ответов
Проверочный код, год рождения Д.И.Менделеева:
В каком задании/вопросе ошибка:
Как должно быть (если в тексте отсутствует вопрос, то пришлите сам вопрос):