Информатика • 9 класс
867

Сортировка массива записей по нескольким критериям (C++)

  • В задачах программирования часто требуется упорядочить не простые числа, а записи (структуры), содержащие несколько полей — например, фамилию, класс, баллы и т. д. В таком случае сортировка выполняется не по одному признаку, а по нескольким критериям (например, сначала по классу, затем по баллам и фамилии).
  • Сортировка по нескольким критериям выполняется с помощью функции сравнения (компаратора), которая определяет, какой из двух элементов должен идти раньше. В стандартной библиотеке C++ для этого используется функция sort () из заголовка <algorithm>.
    Пример. Нужно отсортировать массив учеников: по классу (возрастание), по баллам (убывание), по ФИО (по алфавиту).

Структура для хранения данных об ученике

Функция сравнения (компаратор)

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;
struct Pupil {

    string fio;
    // Фамилия

    int classNum;
    // Номер класса

    int ball; // Баллы
};

bool Compare(const Pupil& a,
const Pupil& b) {

// 1. Сравниваем
класс (по возрастанию)

if (a.classNum < b.classNum) return true;

if (a.classNum > b.classNum) return false;
// 2. Если класс одинаковый —
сравниваем баллы (по убыванию)

if (a.ball > b.ball) return true;

if (a.ball < b.ball) return false;
// 3. Если баллы равны — сравниваем
по ФИО (по алфавиту)

return a.fio < b.fio;

}

Было полезно?

Рекомендуем

Вы учитель или ученик?
Познакомьтесь с нашим образовательным онлайн-сервисом с тысячами интерактивных работ
Учителю
Удобно проводить уроки в классе, назначать работы на дом и анализировать результаты всего класса или конкретных учеников
Ученику
Самостоятельно изучать новые и повторять пройденные темы, готовиться по индивидуальной траектории и оценивать результаты на наглядных графиках
Зарегистрироваться в «Облаке знаний»
Логотип облако знаний
+7 (499) 322-07-57
info@oblakoz.ru

Контактный центр

МО, г. Долгопрудный,
Лихачевский проезд, 4, стр. 1

Отдел заботы о пользователях

Политика конфиденциальности

© ООО «Физикон Лаб», 2026

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪