Sobes.tech
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:

  1. std::sort: Iteratívny algoritmus zo štandardnej knižnice.
  2. 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;
}