Пример программы сортировки с использованием компоратора - 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.
Объяснение кода листинга программы
- uses crt; - подключает модуль для работы с консолью
- const m=100; - определяет размер массива
- function compare(a,b:integer):boolean; - определяет функцию сравнения элементов
- var arr: array[1..m] of integer; - объявляет массив для сортировки
- i, j, k: integer; - объявляет переменные для циклов
- randomize; - инициализирует генератор случайных чисел
- writeln('Исходный массив: '); - выводит заголовок цикла для вывода исходного массива
- for i := 1 to m do - начинает цикл для обхода исходного массива
- arr[i] := random(256); - заполняет массив случайными числами
- write (arr[i]:4); - выводит каждый элемент массива в 4-х знаках после запятой
- 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); - выводит каждый элемент массива в 4-х знаках после запятой
- readln; - ожидает ввода пользователя для завершения программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д