Пузырёк сортировка в диапозоне - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Надо изменить так, чтобы числа от 15 до 50 сортировались по убыванию и записывались в начало массива.

Решение задачи: «Пузырёк сортировка в диапозоне»

textual
Листинг программы
procedure OoOoO(var b:mass;m:integer);
var i,j,k,x:integer;
begin
//перестановка чисел от 15 до 50 вперед
k:=0;
for i:=1 to m do
if b[i] in [15..50] then
 begin
  k:=k+1;
  x:=b[i];
  for j:=i downto k+1 do
  b[j]:=b[j-1];
  b[k]:=x;
 end;
//сортировка первых К чисел
for i:=1 to k-1 do
for j:=i+1 to k do
if b[i]< b[j]then
 begin
  x:=b[i];
  b[i]:=b[j];
  b[j]:=x;
 end;
end;

Объяснение кода листинга программы

Данный код представляет собой процедуру, которая выполняет две операции: перестановку чисел от 15 до 50 вперед и сортировку первых K чисел.

  1. Перестановка чисел от 15 до 50 вперед:
    • Переменная k инициализируется значением 0.
    • В цикле for перебираются числа от 1 до m.
    • Если число b[i] находится в диапазоне от 15 до 50, то:
      • Переменная k увеличивается на 1.
      • Переменная x присваивается значению b[i].
      • В цикле for перебираются числа от i+1 до k+1.
      • Значение b[j] присваивается значению b[j-1].
      • Значение b[k] присваивается значению x.
    • После завершения внутреннего цикла, значение b[k] будет содержать последнее число из диапазона от 15 до 50.
  2. Сортировка первых K чисел:
    • В цикле for перебираются числа от 1 до k-1.
    • В цикле inner for проверяется, что текущее число b[i] меньше следующего числа b[j].
    • Если это условие выполняется, то:
      • Значение x присваивается значению b[i].
      • Значение b[i] присваивается значению b[j].
      • Значение b[j] присваивается значению x.
    • После завершения внутреннего цикла, числа будут отсортированы по возрастанию. Обратите внимание, что данный код не использует вложенные списки.

Оцени полезность:

12   голосов , оценка 4 из 5