Сортировать vector в порядке убывания в C++

Google Translate Icon

В этом посте мы обсудим, как сортировать vector в порядке убывания в C++.

1. Используйте std::sort (или же std::stable_sort)

Эффективным решением является использование std::sort алгоритм, определенный в <algorithm> заголовок. Обычно это высокоэффективная реализация Алгоритм интросортировки, который начинается с быстрая сортировка и переключается на сортировка кучей когда рекурсия идет слишком глубоко.

The std::sort алгоритм не поддерживает относительный порядок равных элементов. Чтобы получить стабильную сортировку, используйте std::stable_sort, который использует Сортировка слиянием алгоритм.

 
Версия с двумя аргументами std::sort алгоритм сортирует vector в порядке возрастания, используя operator<. Чтобы получить порядок убывания, позвоните по номеру std::reverse после std::sort.

Скачать  Выполнить код

 
Приведенный выше код требует дополнительного прохода для обращения вектора. Можно избежать вызова std::reverse с помощью обратных итераторов.

Скачать  Выполнить код

2. Использование std::sort + компаратор

The std::sort функция имеет другую перегруженную версию, которая принимает компаратор. Компаратор — это двоичный предикат, который принимает два аргумента и возвращает логическое значение, определяющее, появляется ли первый аргумент перед вторым аргументом в выходной последовательности.

 
1. Мы можем использовать std::greater как компаратор, который возвращает true, если первый аргумент больше второго аргумента. Начиная с C++14, вы даже можете пропустить аргументы шаблона, т.е. std::greater<int>() становится std::greater<>().

Скачать  Выполнить код

 
2. Компаратором может быть простая бинарная функция, или вы можете передать свой собственный объект функции. Вам просто нужен экземпляр класса с operator() определенный.

Скачать  Выполнить код

 
3. С C++11 вы даже можете передать лямбда-функцию в std::sort функция.

Скачать  Выполнить код

3. Пользовательская процедура сортировки

Наконец, вы также можете написать свою собственную эффективную процедуру для сортировки вектора в порядке убывания, используя быстрая сортировка, Сортировка слиянием алгоритмы и т.д.

Вот и все, что касается сортировки вектора по убыванию в C++.

Оценить этот пост

Средний рейтинг 5/5. Подсчет голосов: 15

Голосов пока нет! Будьте первым, кто оценит этот пост.

Сожалеем, что этот пост не оказался для вас полезным!

Расскажите, как мы можем улучшить этот пост?




Спасибо за чтение.

Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.

Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования :)



Подписывайся
Уведомить о
guest
0 Комментарии
Встроенные отзывы
Просмотреть все комментарии
НЕ переходите по этой ссылке, иначе вы будете забанены на сайте!