Intern
Ako možno zoradiť zoznam?
sobes.tech AI
Odpoveď od AI
Na zoradenie zoznamu v C++ môžete použiť nasledujúce prístupy:
- std::sort: Iteratívny algoritmus zo štandardnej knižnice.
- std::list::sort: Metóda zoradenia pre
std::list, ktorá používa odkazy na prvky namiesto iterátorov.
Porovnanie:
| Metóda | Použiteľné na | Zložitosť | Dodatočná pamäť | Stabilita | Vlastnosti |
|---|---|---|---|---|---|
std::sort |
Náhodný prístup (napríklad, std::vector, std::deque) |
$O(N \log N)$ | $O(\log N)$ (v priemere) | Nestabilné | Pre std::list neefektívne kvôli pomalému náhodnému prístupu. |
std::list::sort |
std::list |
$O(N \log N)$ | $O(1)$ | Stabilné | Efektívne pre std::list, pretože nevyžaduje presun prvkov. |
Príklad použitia std::list::sort:
#include <list>
#include <iostream>
int main() {
std::list<int> môj_zoznam = {5, 2, 8, 1, 9};
// Zoradenie vzostupne
môj_zoznam.sort();
for (int hodnota : môj_zoznam) {
std::cout << hodnota << " ";
}
std::cout << std::endl;
// Zoradenie zostupne s porovnávačom
môj_zoznam.sort([](int a, int b){ return a > b; });
for (int hodnota : môj_zoznam) {
std::cout << hodnota << " ";
}
std::cout << std::endl;
return 0;
}