@VerNika

Внутренняя сортировка. Как лучше реализовать сортировку по нескольким полям?

Если кратко, то пусть у нас есть N записей вида:
struct Node {
   string a, b;
   int c, d, e;
};

Пользователь вводит 3 числа - номера полей, по которым нужно отсортировать наши N записей.
Сортировка - внутренняя, с помощью бинарного дерева. С сортировкой по одному полю всё ясно и понятно - строим дерево используя в качестве ключей выбранное поле.

А что делать с сортировкой по нескольким полям?

UPD#1
Конечно, как вариант, для каждого поля строить своё бинарное дерево и сортировать по первому полю-дереву и вдруг, если ключи совпали, сортировать по следующему полю-дереву и т. д. Так будет правильно?
  • Вопрос задан
  • 369 просмотров
Решения вопроса 1
alexandret
@alexandret
Программист, программист, маркетолог
Почему бы не сделать просто процедуру сравнения объектов типа Node? обычно она реализуется функцией cmp или встроенными "магическими" методами, как в питоне.

А потом скармливать в функцию сортировки как один из параметров эту сравнивающую функцию.

Аналогично можно использовать результат этой функции при построении бинарного дерева для того чтоб решить к какому поддереву должна относиться текущая вершина.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы