Назад к вопросам
Intern
103
questionbank
Как можно отсортировать список?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Для сортировки списка в C++ можно использовать следующие подходы:
- std::sort: Итеративный алгоритм из стандартной библиотеки.
- std::list::sort: Метод сортировки для
std::list, который использует не итераторы, а ссылки на элементы.
Сравнение:
| Метод | Применяется к | Сложность | Дополнительная память | Стабильность | Особенности |
|---|---|---|---|---|---|
std::sort |
Случайный доступ (например, std::vector, std::deque) |
$O(N \log N)$ | $O(\log N)$ (в среднем) | Нестабильный | Для std::list неэффективен из-за медленного произвольного доступа. |
std::list::sort |
std::list |
$O(N \log N)$ | $O(1)$ | Стабильный | Эффективен для std::list, так как не требует перемещения элементов. |
Пример использования std::list::sort:
#include <list>
#include <iostream>
int main() {
std::list<int> my_list = {5, 2, 8, 1, 9};
// Сортировка по возрастанию
my_list.sort();
for (int val : my_list) {
std::cout << val << " ";
}
std::cout << std::endl;
// Сортировка по убыванию с использованием компаратора
my_list.sort([](int a, int b){ return a > b; });
for (int val : my_list) {
std::cout << val << " ";
}
std::cout << std::endl;
return 0;
}