Шейкерной сортировкой упорядочить массив по возрастанию и по убыванию - 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 и вывод результата.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д