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

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

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

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

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

textual
Листинг программы
  1. type TLessFunc = function (a, b: Integer): Boolean;
  2. procedure ShakerSort(var a: array of Integer; IsLess: TLessFunc);
  3. var l, r, n, j, t: Integer;
  4. begin
  5.   l:=Low(a); n:=l; r:=High(a);
  6.   while l<r do begin
  7.     for j:=l to r-1 do
  8.       if IsLess(a[j+1],a[j]) then begin
  9.         n:=j; t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t;
  10.       end;
  11.     r:=n;
  12.     for j:=r downto l+1 do
  13.       if IsLess(a[j],a[j-1]) then begin
  14.         n:=j; t:=a[j]; a[j]:=a[j-1]; a[j-1]:=t;
  15.       end;
  16.     l:=n;
  17.   end;
  18. end;
  19. procedure mWrite(const a: array of Integer);
  20. var i: Integer;
  21. begin
  22.   for i:=Low(a) to High(a) do Write(' ',a[i]); WriteLn;
  23. end;
  24. {$F+}
  25. function less(a, b: Integer): Boolean; begin less:=a<b end;
  26. function more(a, b: Integer): Boolean; begin more:=a>b end;
  27. const a: array [1..8] of Integer = (32,14,36,1,0,62,10,3);
  28. begin
  29.   mWrite(a);
  30.   ShakerSort(a,less); mWrite(a);
  31.   ShakerSort(a,more); mWrite(a);
  32. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы