Шейкерной сортировкой упорядочить массив по возрастанию и по убыванию - Pascal

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

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

Отсортировать заданный массив элементов А по возрастанию и убыванию с помощью метода шейкер-сортировки. A (32,14,36,1,0,62,10,3)

Решение задачи: «Шейкерной сортировкой упорядочить массив по возрастанию и по убыванию»

textual
Листинг программы
type TLessFunc = function (a, b: Integer): Boolean;
procedure ShakerSort(var a: array of Integer; IsLess: TLessFunc);
var l, r, n, j, t: Integer;
begin
  l:=Low(a); n:=l; r:=High(a);
  while l<r do begin
    for j:=l to r-1 do
      if IsLess(a[j+1],a[j]) then begin
        n:=j; t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t;
      end;
    r:=n;
    for j:=r downto l+1 do
      if IsLess(a[j],a[j-1]) then begin
        n:=j; t:=a[j]; a[j]:=a[j-1]; a[j-1]:=t;
      end;
    l:=n;
  end;
end;
procedure mWrite(const a: array of Integer);
var i: Integer;
begin
  for i:=Low(a) to High(a) do Write(' ',a[i]); WriteLn;
end;
{$F+}
function less(a, b: Integer): Boolean; begin less:=a<b end;
function more(a, b: Integer): Boolean; begin more:=a>b end;
const a: array [1..8] of Integer = (32,14,36,1,0,62,10,3);
begin
  mWrite(a);
  ShakerSort(a,less); mWrite(a);
  ShakerSort(a,more); mWrite(a);
end.

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

  1. Объявление типа данных TLessFunc для функции, принимающей два целых числа и возвращающей булево значение.
  2. Объявление процедуры ShakerSort, принимающей изменяемый массив целых чисел и функцию, определенную как TLessFunc.
  3. Инициализация переменных l, r, n, j, t типа Integer.
  4. Цикл, выполняющий сортировку массива методом Шейкер (shaker sort).
  5. Объявление процедуры mWrite для вывода элементов массива.
  6. Объявление функций сравнения less и more, возвращающих результаты сравнения параметров a и b.
  7. Инициализация константы a, содержащей 8 элементов типа Integer.
  8. Вывод исходного массива a.
  9. Сортировка массива a по возрастанию с использованием функции less и вывод результата.
  10. Сортировка массива a по убыванию с использованием функции more и вывод результата.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

10   голосов , оценка 4 из 5
Похожие ответы