Intern
Hoe kan een lijst worden gesorteerd?
sobes.tech AI
Antwoord van AI
Om een lijst in C++ te sorteren, kunt u de volgende benaderingen gebruiken:
- std::sort: Iteratief algoritme uit de standaardbibliotheek.
- std::list::sort: Sorteermethode voor
std::list, die verwijzingen naar de elementen gebruikt in plaats van iterators.
Vergelijking:
| Methode | Toepasbaar op | Complexiteit | Extra geheugen | Stabiliteit | Kenmerken |
|---|---|---|---|---|---|
std::sort |
Willekeurige toegang (bijvoorbeeld, std::vector, std::deque) |
$O(N \log N)$ | $O(\log N)$ (gemiddeld) | Onstabiel | Voor std::list niet efficiënt vanwege trage willekeurige toegang. |
std::list::sort |
std::list |
$O(N \log N)$ | $O(1)$ | Stabiel | Efficiënt voor std::list, omdat het geen elementen hoeft te verplaatsen. |
Voorbeeld van gebruik van std::list::sort:
#include <list>
#include <iostream>
int main() {
std::list<int> mijn_lijst = {5, 2, 8, 1, 9};
// Oplopende sortering
mijn_lijst.sort();
for (int waarde : mijn_lijst) {
std::cout << waarde << " ";
}
std::cout << std::endl;
// Aflopende sortering met comparator
mijn_lijst.sort([](int a, int b){ return a > b; });
for (int waarde : mijn_lijst) {
std::cout << waarde << " ";
}
std::cout << std::endl;
return 0;
}