Шейкерной сортировкой упорядочить массив по возрастанию и по убыванию - 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.
Объяснение кода листинга программы
- Объявление типа данных TLessFunc для функции, принимающей два целых числа и возвращающей булево значение.
- Объявление процедуры ShakerSort, принимающей изменяемый массив целых чисел и функцию, определенную как TLessFunc.
- Инициализация переменных l, r, n, j, t типа Integer.
- Цикл, выполняющий сортировку массива методом
Шейкер
(shaker sort). - Объявление процедуры mWrite для вывода элементов массива.
- Объявление функций сравнения less и more, возвращающих результаты сравнения параметров a и b.
- Инициализация константы a, содержащей 8 элементов типа Integer.
- Вывод исходного массива a.
- Сортировка массива a по возрастанию с использованием функции less и вывод результата.
- Сортировка массива a по убыванию с использованием функции more и вывод результата.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д