Intern
Cum se poate sorta o listă?
sobes.tech AI
Răspuns de la AI
Pentru sortarea unei liste în C++, puteți utiliza următoarele abordări:
- std::sort: Algoritm iterativ din biblioteca standard.
- std::list::sort: Metoda de sortare pentru
std::list, care utilizează referințe la elemente în loc de iteratori.
Comparatie:
| Metodă | Se aplică la | Complexitate | Memorie suplimentară | Stabilitate | Caracteristici |
|---|---|---|---|---|---|
std::sort |
Acces aleator (de exemplu, std::vector, std::deque) |
$O(N \log N)$ | $O(\log N)$ (în medie) | Nesigur | Pentru std::list ineficient din cauza accesului aleator lent. |
std::list::sort |
std::list |
$O(N \log N)$ | $O(1)$ | Stabil | Eficient pentru std::list, deoarece nu necesită mutarea elementelor. |
Exemplu de utilizare a std::list::sort:
#include <list>
#include <iostream>
int main() {
std::list<int> lista_mea = {5, 2, 8, 1, 9};
// Sortare crescătoare
lista_mea.sort();
for (int val : lista_mea) {
std::cout << val << " ";
}
std::cout << std::endl;
// Sortare descrescătoare folosind comparator
lista_mea.sort([](int a, int b){ return a > b; });
for (int val : lista_mea) {
std::cout << val << " ";
}
std::cout << std::endl;
return 0;
}