Пример программы сортировки с использованием компоратора - Pascal ABC

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

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

Здравствуйте! Я никак не могу понять, что делает компаратор в программах сортировки. Можете привести пример программы сортировки с использованием компаратора без сокращений? Или, хотя бы, на этой программе сортировки:
Куда внутри сортировки нужно писать вызов функции компаратора?

Решение задачи: «Пример программы сортировки с использованием компоратора»

textual
Листинг программы
uses crt;
const m=100;
function compare(a,b:integer):boolean;
begin
compare:=a>b;
end;
var arr: array[1..m] of integer;
    i, j, k: integer;
begin
randomize;
writeln('Исходный массив: ');
for i := 1 to m do
 begin
  arr[i] := random(256);
  write (arr[i]:4);
 end;
writeln;
writeln;
for i:=1 to m-1 do
for j:=1 to m-i do
if compare(arr[j],arr[j+1]) then
 begin
  k := arr[j];
  arr[j] := arr[j+1];
  arr[j+1] := k
 end;
writeln('Отсортированный массив: ');
for i := 1 to m do
write (arr[i]:4);
readln
end.

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

  1. uses crt; - подключает модуль для работы с консолью
  2. const m=100; - определяет размер массива
  3. function compare(a,b:integer):boolean; - определяет функцию сравнения элементов
  4. var arr: array[1..m] of integer; - объявляет массив для сортировки
  5. i, j, k: integer; - объявляет переменные для циклов
  6. randomize; - инициализирует генератор случайных чисел
  7. writeln('Исходный массив: '); - выводит заголовок цикла для вывода исходного массива
  8. for i := 1 to m do - начинает цикл для обхода исходного массива
  9. arr[i] := random(256); - заполняет массив случайными числами
  10. write (arr[i]:4); - выводит каждый элемент массива в 4-х знаках после запятой
  11. writeln; - переходит на новую строку
  12. writeln; - переходит на новую строку
  13. for i:=1 to m-1 do - начинает цикл для сортировки массива
  14. for j:=1 to m-i do - начинает внутренний цикл для сравнения элементов
  15. if compare(arr[j],arr[j+1]) then - сравнивает элементы и меняет их местами при необходимости
  16. begin - начинает блок кода для обмена элементов
  17. k := arr[j]; - сохраняет значение первого элемента для последующего возврата
  18. arr[j] := arr[j+1]; - меняет местами элементы
  19. arr[j+1] := k - возвращает значение первого элемента на исходное место
  20. end; - заканчивает блок кода для обмена элементов
  21. writeln('Отсортированный массив: '); - выводит заголовок цикла для вывода отсортированного массива
  22. for i := 1 to m do - начинает цикл для вывода отсортированного массива
  23. write (arr[i]:4); - выводит каждый элемент массива в 4-х знаках после запятой
  24. readln; - ожидает ввода пользователя для завершения программы

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


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

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

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