- В задачах программирования часто требуется упорядочить не простые числа, а записи (record), содержащие несколько полей — например, фамилию, класс, баллы и т. д. В таком случае сортировка выполняется не по одному признаку, а по нескольким критериям (например, сначала по классу, затем по баллам и фамилии).
- Сортировка по нескольким критериям выполняется с помощью функции сравнения (компаратора), которая определяет, какой из двух элементов должен идти раньше.
- В Pascal можно реализовать такую сортировку, используя собственную функцию сравнения и простую сортировку (например, пузырьковую).
Пример. Функция, сортирующая учеников по классу (возрастание), затем по баллам (убывание) и по ФИО (по алфавиту).
Структура для хранения данных об ученике | Функция сравнения (компаратор) |
|---|---|
type TPupil = | function ComparePupils (const A, B: TPupil): integer; ComparePupils := -1;Exit; end; ComparePupils := 1; Exit; end; ComparePupils := -1; Exit; end; ComparePupils := -1; Exit; end; ComparePupils := -1; Exit; end; ComparePupils := -1; Exit; end; end; |